題 為什麼我的批處理文件中的ping命令在循環中執行?


我在Windows 7中創建了一個.BAT文件,其中包含以下行:

PING XXX.XXX.XXX.XXX -t

(XXX替換實際的IP號碼)。但是,當我雙擊這個批處理文件時,我可以看到ping命令在循環中重複執行。我甚至試圖重命名 ping.BAT 至 ping.CMD 但結果是一樣的。

我想避免通過命令提示符編寫ping命令,這就是我創建批處理文件的原因。我不知道為什麼在將同一語句放入批處理文件時連續調用ping命令。


7
2018-06-18 03:42


起源


實際上重複或你看到它永遠ping?因為那是什麼 -t 確實。 - ta.speot.is
ping 127.0.0.1 -t < - 來自cmd提示符,它重複執行。並且這不在批處理文件中(在win xp中測試) - barlop
無論如何你應該把 - 開關放在主機之前。 ping -t 127.0.0.1但做同樣的事情。並且意味著。為什麼要使用-t如果你不想要無限,請看ping - ?所以你的問題非常奇怪 - barlop
“我不知道在將相同的語句放入批處理文件時,PING命令會被連續調用。” < - 你堅持這個嗎? - barlop
我還沒有找到解決方案。我看到PING命令被重複調用而沒有任何結果。 - pradeetp


答案:


由於你沒有提供你不喜歡的任何輸出或屏幕截圖,所以你有什麼問題,這有點不清楚,但我會解釋我看到的兩個最可能的問題:

鑑於你的腳本被調用 ping.bat 看起來像這樣:

 ping example.com

然後翻譯(cmd.exe)搜索/探測環境變量中的路徑 %PATH% 對於看起來像的東西 ping ...它通過附加每個後綴來實現 %PATHEXT% 其中包含類似的內容 .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC。所以,只是打電話 ping 來自 ping.bat導致搜索 ping.com  ping.exe  ping.bat 等等。口譯員會找到一個 ping.bat 在當前的工作目錄中(你的 ping.bat並稱之為。

所以,你會很高興 遞歸 這裡:ping.cmd執行第一行,搜索“ping”,找到“ping.cmd”,執行第一行,搜索“ping”,找到“ping.cmd”,執行第一行,搜索“ping” “,找到”ping.cmd“......

你可能遇到的第二個問題是:

批處理文件的解釋器通常會重複您寫入.bat / .cmd文件的命令。因此這樣的事情 ping www.superuser.com 將如下所示:

 C:\Users\XYZ\Desktop>ping www.superuser.com

 Ping wird ausgeführt für superuser.com [64.34.119.12] mit 32 Bytes Daten:
 Antwort von 64.34.119.12: Bytes=32 Zeit=110ms TTL=46
 Antwort von 64.34.119.12: Bytes=32 Zeit=107ms TTL=46

如果你想擺脫 C:\Users\XYZ\Desktop>ping www.superuser.com 在腳本的輸出中,你必須在每行前加一個 @ (例如,'@ping www.superuser.com')在腳本中或放置一個 @echo off 在你想要“靜靜地”執行一堆命令行之前。

TL; DR; 不要將您的bat文件與現有程序相同。


14
2018-01-26 14:28





我有同樣的問題,

ping.bat包含幾行ping命令

ping host1
ping host2
ping host3
...

cmd shell中的輸出看起來如下所示並繼續循環,直到中斷為止 CTRL+C

c:\ping host1    
c:\ping host1    
c:\ping host1    
c:\ping host1    
c:\ping host1
...

c:\ping host1
^CTerminate batch job (Y/N)?

要解決它,只需重命名即可 ping.bat,因此它不會在批處理文件中調用自身或使用ping.exe作為批處理文件中的命令

ping.exe host1
ping.exe host2
ping.exe host3
...

11
2018-01-26 14:05





-t參數使ping連續。

也許刪除-t參數然後告訴您的批處理腳本等待您在殺死cmd屏幕之前按Enter鍵。

有一段時間沒有使用過Windows,但這應該有效:

ping xxx.xxx.xxx.xxx
pause
exit

3
2018-06-18 03:57



刪除-t不起作用。你能發帖子嗎? - pradeetp
@pradeetp在上面添加了一些代碼 - n0pe


我有同樣的問題。這是決議:

將ping.bat文件重命名為pingtest.bat

並確保它包含:

ping xxx.xxx.xxx.001
ping xxx.xxx.xxx.002
ping xxx.xxx.xxx.003
暫停

這將允許您ping一個或多個地址,並將在屏幕上顯示結果。通過雙擊可以在PC上的任何位置運行此批處理文件。


3
2017-11-29 09:08





本地腳本執行似乎阻止ping.exe在腳本中運行。嘗試右鍵單擊,然後“以管理員身份運行”。我正在查找如何更新執行策略。

就在我認為我對Windows有所了解的時候,他們改變了它。


更新:遞歸是答案......

您無法將其命名為ping.bat並調用ping.exe

您也無法將其稱為route.bat並調用route.exe。

例如,當我運行ping.bat時,再次以pingx.bat運行它: enter image description here


1
2018-01-26 14:44





右鍵單擊 - 以管理員身份運行為我工作。


1
2017-08-20 16:31



我可以發誓,這是不正確的並經過測試 - 而且他是正確的O_O - nixda


這是因為您命名批處理文件與命名ping命令相同。將批處理文件重命名為其他內容。等等:myping.bat


-1
2018-02-15 15:10





換一種說法, 不要命名您的批處理文件(ping)。使用您想要的任何其他文件名。以下代碼將完美地運行。

@echo off
PING XXX.XXX.XXX.XXX
pause

-2
2018-03-07 21:53



答案與stefan和akira已經給出的答案相同。只有更短 - nixda