@echo off
:begin
for /f %%a in (computerlist.txt) do (
setlocal
psexec \\%%a -u user -p password -i -d "d:\path\command.exe"
endlocal
)
當腳本運行時,當它發現一臺機器無法訪問我希望它跳過它。如何跳過無法訪問的批處理文件中的計算機?
如何編寫腳本以跳過無法訪問的計算機並繼續到txt文件中的下一個計算機?
@echo off
:begin
for /f %%a in (computerlist.txt) do (
setlocal
psexec \\%%a -u user -p password -i -d "d:\path\command.exe"
endlocal
)
當腳本運行時,當它發現一臺機器無法訪問我希望它跳過它。如何跳過無法訪問的批處理文件中的計算機?
如何編寫腳本以跳過無法訪問的計算機並繼續到txt文件中的下一個計算機?
如何通過簡單的測試來了解機器是否可以ping通?
@echo off
setlocal
:begin
for /f %%a in (computerlist.txt) do (
ping -n 1 %%a >NUL 2>NUL
if %errorlevel%==0 (
psexec \\%%a -u user -p password -i -d "d:\path\command.exe"
) else echo Skipping unreachable host %%a
)
endlocal
謝謝!我會測試它,看看它是如何工作的。 :) – 2013-02-13 21:12:52
這是一個輝煌的答案!謝謝! – 2013-10-18 20:24:45
其實,窗戶ping.exe的不返回有意義errorlevels,(啊?)
始終返回「0」錯誤級別,除非IP協議棧本身是大清洗。
你有什麼做的是:管你平到一個txt文件的輸出,而「發現」爲TTL =
即
平10.10.10.10。 > pingtest.txt
FINDSTR/C: 「TTL =」 pingtest.txt> NUL
如果%ERRORLEVEL%當量0(作事)否則(回聲跳過無法訪問的主機 「無所謂」)
然後使用FIND.EXE或Findstr.exe在您的輸出文件中查找TTL =
(注意find和findstr在「找到」您搜索的內容時都使用「0」錯誤級別)
1. Ping可能因爲很多原因而失敗,但「TTL =」始終是成功ping的一部分
2.我總是至少ping過n次,因爲偶爾會有第一個或第二個出現問題,並且我想讓它更有可能成功我跳過它。
3.爲此,您必須使用上面的FOR循環方法,只是原始的psexec.exe目前沒有方法來測試/跳過從文本文件中調用的目標。
4.如果需要使用網絡資源在PSEXEC會話,那麼你需要運行「-h」選項,這樣你得到提升的令牌,它允許你映射驅動器
我希望這有助於!
如果你不關心通過'psexec'執行的命令的輸出,那麼'wmic/node:%% a/user:user/password:password process call create「 cmd/c \「d:\\ path \\ command.exe \」「'會比'psexec'快。 – rojo 2013-02-13 01:49:56