簡體   English   中英

20秒后停止執行批處理文件,然后移至下一步

[英]Stop Execution of Batch File after 20 Seconds and move to Next

我有一個從網上得到的小腳本。 該腳本基本上從文件中讀取信息(IP地址)並對其進行ping操作,然后將結果插入文本文件中。 該腳本完全可以滿足我的需要,但是問題是,我需要在腳本中更改“ ping”而不是ping。 問題在於,在路徑轉換過程中,如果有延遲,腳本將停留3分鍾左右,或者可能是5分鍾,具體取決於響應,然后再移到下一個IP地址。

我想要的只是某種超時時間,大概20秒左右,無論響應如何,都移至下一條記錄。 有人可以修改下面的腳本,以便路徑命令等待30秒左右,然后移至下一行信息(與響應內容無關)。 任何提示或方向將不勝感激...謝謝。

我檢查了超時-w或-p選項不起作用。

@echo off
cls
echo PathPing test in progress...

for /F %%i in (iplist.txt) do pathping %%i >> result.txt

echo .
echo .
echo Result is ready.    

非常感謝你。

我知道這是一則舊文章,但我希望以后能為他人提供幫助。 該腳本波紋管會從每個地址iplist.txt文件,將pathping每個地址只有20秒。 然后,每個結果將輸出到result.txt文件。

現在,由於pathping命令是如何工作的,“停止”它的唯一方法是終止CMD窗口本身。 由於批處理代碼的原因,一次不能運行兩行(例如,與C ++不同),因此我們可以使用start "" cmd /C ""命令召喚兩個新窗口。

對於每個地址,我們召喚一個pathping窗口和一個taskkill窗口。 Taskill窗口將使用路徑窗口的Task PID # ,並等待20秒才能終止。

同時,核心批處理文件將等待40秒,所有文件都將關閉並關閉。 然后它將所有數據合並到result.txt文件中。

@ECHO OFF
@SETLOCAL enableextensions enabledelayedexpansion
@TITLE PathPing from textfile, cancel request for each x after 20s.
@GOTO :Start

:Start

echo WARN: Starting PathPing Script...
echo WARN: This may take some time...
goto :PathPing

:PathPing

:: Large number is for token gathering
set /a number=123456789
for /f "delims== tokens=1,2" %%G in (iplist.txt) do (

    :: Start The pathping's for each %%G
    start "!number!" cmd /C "pathping "%%G" >> "!number!.outputfile""

    :: Start Kill Window (Let process live for 20 seconds)
    FOR /F "tokens=2" %%# in ('tasklist /v ^| find "!number!" ^| find "Console"') do set PID=%%#
    start "" cmd /C "(PING localhost -n 20 >nul) & (taskkill /pid !PID! /t /f & goto :eof)"

    set /a number+=1
)

:: End of FOR statement. Now copy .outputfile to one file.
:: Wait 60 Seconds for the FOR statement to finish copy there files.
PING localhost -n 30 >nul

:: DEL is optional, remove it if you don't with to over-wright text file.
If exist "%~dp0\result.txt" (goto :Del) ELSE (goto :Skip)

:Del
Del /Q "%~dp0\result.txt"
Goto :Skip

:Skip
For %%A In (*.outputfile) DO (for /f "delims== tokens=1,2" %%G in (%%A) do echo %%G >> result.txt)

:: Clean up all .outputfile files.
For %%A In (*.outputfile) DO (DEL /Q "%~dp0\%%A")
Goto :Finish

:Finish
cls
echo WARN: Result is ready.
echo(
pause
goto :eof

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM