iT邦幫忙

2

cmd.exe的怪問題

  • 分享至 

  • xImage

最近重新安裝了了一台筆電
建了兩個批次擋在桌面
分別是ping 8.8.8.8 -t和ifconfig /all
但執行後都沒反應,試著將@echo off拿掉後發現,執行會像下圖一樣不斷循環
https://ithelp.ithome.com.tw/upload/images/20240904/20006813GUBa16EPKY.jpg

後來我手動輸入指令測試,發現如果是在一般執行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後就正常了

謝謝大家的回答

看更多先前的討論...收起先前的討論...
jasonlin268 iT邦研究生 2 級 ‧ 2024-09-04 17:29:19 檢舉
 
slime iT邦大師 1 級 ‧ 2024-09-04 18:20:08 檢舉
批次檔放在桌面, 而且名稱是ipconfig.bat嗎?

這是DOS的原則, 執行時會由目前的目錄下先找符合檔名的可執行檔, 若找不到, 才找PATH設定的目錄.

如果批次檔是: c:\user\id\desktop\ipconfig.bat
在 c:\user\id> 執行 c:\user\id\desktop\ipconfig.bat 時, 因為 c:\users\id\ 底下沒有 ipconfig , 所以執行了 PATH 內的 Windows 系統目錄.
在 c:\user\id\desktop> 執行 ipconfig 時, 因為目錄下就有 ipconfig.bat , 就會執行自己而不會執行 Windows 系統目錄下的程式.
sucksemil iT邦新手 1 級 ‧ 2024-09-05 09:14:54 檢舉
可以無視批次檔,因為我手動輸入指令,只要路徑是在桌面,就會遇到一樣的情形
幫批次檔在桌面建立捷徑,對捷徑右鍵 內容 捷徑分頁 勾選 以系統管理員權限執行
請參考一樓的附圖說明
slime iT邦大師 1 級 ‧ 2024-09-05 21:30:40 檢舉
因為問題就是有批次檔, 檔名跟內建的程式一樣, 所以Windows一直在執行批次檔而沒有執行內建的程式.
sucksemil iT邦新手 1 級 ‧ 2024-09-06 10:05:10 檢舉
@slime 我有說明,在桌面地的路徑下,使用cmd輸入指令,會得到如圖一樣的結果,是輸入指令而不是存成bat檔,所以這已經跟批次檔無關了
蟹老闆 iT邦大師 1 級 ‧ 2024-09-06 11:54:48 檢舉
那會不會是桌面路徑有一個ping或ipconfig的批次檔呢?
您之前的批次檔名使用的是什麼名稱?
蟹老闆 iT邦大師 1 級 ‧ 2024-09-06 11:56:28 檢舉
指令優先順序,同一路徑下
com->exe->bat
若找不到則在%path%中找
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
1
allenlwh
iT邦高手 1 級 ‧ 2024-09-04 16:17:41
@echo off
ping 8.8.8.8 -t
@echo off
ipconfig /all

pause
看更多先前的回應...收起先前的回應...
sucksemil iT邦新手 1 級 ‧ 2024-09-04 16:36:12 檢舉

你貼的就是我批次檔的內容

allenlwh iT邦高手 1 級 ‧ 2024-09-04 16:42:48 檢舉

我的可以跑 (直接執行或是以系統管理員身份執行 都可以)
https://ithelp.ithome.com.tw/upload/images/20240904/20033493kOCPjYCnKl.jpghttps://ithelp.ithome.com.tw/upload/images/20240904/20033493DwsyrvScnJ.jpg

vit5015 iT邦新手 2 級 ‧ 2024-09-04 16:56:14 檢舉

批次檔內容改成下面試試?
C:\Windows\System32\cmd.exe /c ipconfig /all
pause

sucksemil iT邦新手 1 級 ‧ 2024-09-04 16:59:39 檢舉

問題不在批次檔,在於指令如果是在c:\user\id\desktop>底下執行就會有問題

sucksemil iT邦新手 1 級 ‧ 2024-09-04 17:10:45 檢舉

https://ithelp.ithome.com.tw/upload/images/20240904/20006813bkOVbyXBYd.jpg

BKY iT邦好手 1 級 ‧ 2024-09-04 19:24:07 檢舉

我用我的電腦測試放在桌面是可以執行的

jasonlin268 iT邦研究生 2 級 ‧ 2024-09-05 09:05:20 檢舉

 

sucksemil iT邦新手 1 級 ‧ 2024-09-05 09:15:42 檢舉

@BKY 我其他的電腦也都可以

試著這麼設定
https://ithelp.ithome.com.tw/upload/images/20240905/20097082V8AItAKktS.png

1
蟹老闆
iT邦大師 1 級 ‧ 2024-09-05 11:11:19

批次檔名不要與ping 或ipconfig同名

sucksemil iT邦新手 1 級 ‧ 2024-09-05 13:51:25 檢舉

請無視批次檔

slime iT邦大師 1 級 ‧ 2024-09-05 21:30:53 檢舉

因為問題就是有批次檔, 檔名跟內建的程式一樣, 所以Windows一直在執行批次檔而沒有執行內建的程式.

2
chuway
iT邦新手 2 級 ‧ 2024-09-06 09:37:07

建議可以打批次檔全名看看
如ping.bat ipconfig.cmd ping.ps1
(不要用保留字或與命令名稱同檔名的就能避開)

command的檔案搜尋方式
沒給附檔名優先順序: .com→.exe→其他(.bat.cmd.ps1.lnk...)
檔案搜尋方式: 現在目錄→環境變數所指定的path順序(用set可看到)

1

在同目錄底下。同時存在 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 \」(或隨便一個路徑,反正不要在當前目錄)
你就會開始正常跑了。

slime iT邦大師 1 級 ‧ 2024-09-10 06:58:26 檢舉

其實原文已經有實驗結果了:
"執行cmd.exe時預設的c:\user\id>底下就能正常執行指令"
"把批次檔放在桌面就會是在c:\user\id\desktop>底下執行指令,就會如上圖"

就是因為你原文已經有其答案了。
但還一直不知道原因的情況下。
所以我只好再說一次。
(原本想說其它人都有回答到了,就沒要回答了)

現在明白原因了嘛?

還有,這是題外話。
一般還是最好不要命名與系統指令同名的bat檔。
或許你會覺得囉嗦。但人家給你的提醒也要注意。
不要只想看眼前的東西。

其實你的問題答案很簡單。大多數的人都有回答到其題意了。
但不知道為何你一直去「不是這個問題,不是那個....」

總之,後續你也明白問題了。砍了 bat 就對了。
最佳解可以給其它人,不要給我。

jasonlin268 iT邦研究生 2 級 ‧ 2024-09-13 10:28:27 檢舉

您的脾氣真好,我是不想再爭辯說明,所以把回答清空了。

0
nancyvaughn
iT邦見習生 ‧ 2024-09-14 17:29:37

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

我要發表回答

立即登入回答