最近重新安裝了了一台筆電
建了兩個批次擋在桌面
分別是ping 8.8.8.8 -t和ifconfig /all
但執行後都沒反應,試著將@echo off拿掉後發現,執行會像下圖一樣不斷循環
後來我手動輸入指令測試,發現如果是在一般執行cmd.exe時預設的c:\user\id>底下就能正常執行指令,但如果像我是把批次檔放在桌面就會是在c:\user\id\desktop>底下執行指令,就會如上圖
第一次遇到這樣的情況,以往的經驗是執行cmd.exe時無論在哪個目錄下,都可以正常執行
9/10 我找到原因了
因為最早時候做的兩個bat檔,檔名為ipconfig.bat和ping.bat,放在桌面沒有刪掉
導致即使是手動輸入指令,只要是在c:\users\id\desktop\底下,指令就會當掉
刪掉桌面的ipconfig.bat和ping.bat後就正常了
謝謝大家的回答
@echo off
ping 8.8.8.8 -t
@echo off
ipconfig /all
pause
批次檔名不要與ping 或ipconfig同名
建議可以打批次檔全名看看
如ping.bat ipconfig.cmd ping.ps1
(不要用保留字或與命令名稱同檔名的就能避開)
command的檔案搜尋方式
沒給附檔名優先順序: .com→.exe→其他(.bat.cmd.ps1.lnk...)
檔案搜尋方式: 現在目錄→環境變數所指定的path順序(用set可看到)
在同目錄底下。同時存在 ping.com ping.exe ping.bat
時。
當打指令「ping」時。
其優先順序會是 com -> exe -> bat
相信已經有很多人說到了。
但沒注意到一件事。
當 com、exe 不在同目錄的情況下呢???
也就是說,我在當前目錄下。只有 bat 的情況下。
cmd系統其實會先找其當下的目錄,是否有能運行的指令。
順序還是依 com -> exe -> bat 。
而目前目錄並不存在 com exe 。但有 bat 。就會去運行bat了。
當全部找不到才會去跑 %PATH%內的設定。並依 %PATH%所設定的順序。
來去執行相對應的指令。
所以,正確的答案是,會依當前目錄 ->PATH順序目錄
也就是說。desktop目下,有存在其對應指令的 bat 檔。就會被優先執行。
然後就開始無限運行。畢竟,你還是呼叫到了同一支bat。
你可以自行做個實驗。在bat 內,加個 「cd \」(或隨便一個路徑,反正不要在當前目錄)
你就會開始正常跑了。
其實原文已經有實驗結果了:
"執行cmd.exe時預設的c:\user\id>底下就能正常執行指令"
"把批次檔放在桌面就會是在c:\user\id\desktop>底下執行指令,就會如上圖"
就是因為你原文已經有其答案了。
但還一直不知道原因的情況下。
所以我只好再說一次。
(原本想說其它人都有回答到了,就沒要回答了)
現在明白原因了嘛?
還有,這是題外話。
一般還是最好不要命名與系統指令同名的bat檔。
或許你會覺得囉嗦。但人家給你的提醒也要注意。
不要只想看眼前的東西。
其實你的問題答案很簡單。大多數的人都有回答到其題意了。
但不知道為何你一直去「不是這個問題,不是那個....」
總之,後續你也明白問題了。砍了 bat 就對了。
最佳解可以給其它人,不要給我。
您的脾氣真好,我是不想再爭辯說明,所以把回答清空了。
your file is correct but your delete operation seems to be wrong, you can try tiny fishing to perform that delete operation, I think it is quite ok