2012-05-18 58 views
7

我想在多臺計算機上的批處理文件中運行命令。如何獲得批處理文件以接受來自txt文件的輸入?

例如:

@echo off 
ping %1 
pause 
exit 

如果這個批處理文件被稱爲pingme.bat和I型pingme.bat yahoo.com那就ping通yahoo.com。我的問題是我希望批處理文件接受來自文本文件的輸入。

像這樣pingme.bat computers.txt它會讀取文件中列出的計算機的名稱,並執行我指定給他們做的任何命令。

%1接受我指定的輸入,當我輸入批處理文件時,現在我想批處理文件讀取txt中的行並執行它。

文本中的行以列表形式不使用逗號或任何內容。

回答

9

一個辦法這樣做將是把網址中的文本文件,如下所示:

www.google.com
www.yahoo.com

然後運行批處理

for /f %%a in (%1) do (
echo Pinging %%a... 
ping %%a 
) 

和CMD爲pingme.bat URLs.txt

或者運行它,你可以在該批次中指定文本文件的名稱,並運行它沒有參數

for /f %%a in (URLs.txt) do (
echo Pinging %%a... 
ping %%a 
) 

這裏的另一種方法

該特定批次將拉動從列表中,並寫入到output.txt如果ping成功

@ECHO OFF 
SET output=output.txt 
IF EXIST "%output%" DEL "%output%" 
FOR /f %%a IN (URLs.txt) DO (
    CALL :ping %%a 

) 
GOTO :EOF 

:ping 
ping -n 1 %1 | find "Approximate round trip" >NUL || ECHO %1>>"%output%" 

希望這使你在正確的方向。

+2

爲什麼SETLOCAL/ENDLOCAL在第一個循環內?爲什麼在第二個循環中調用子程序?在這兩種情況下,你都在放慢速度,因爲我看不到任何理由。 – dbenham

+0

@dbenham好點。自從修改SO帖子的腳本以來,它就一直存在。該子程序僅用於組織。謝謝。 –

1

你可以使用一個FOR循環 - 它保存爲pingme.bat

FOR /F "tokens=*" %%L IN (%1) DO (
    ping %%L 
    pause 
) 

,並與文本文件作爲參數pingme.bat computers.txt調用它。

0

要在文本文件中找到的多個網址的IP地址,並得到輸出文本文件:

FOR /F "tokens=*" %%L IN (%1) DO (
    nslookup %%L >> output.txt 
    pause 
) 

腳本另存爲「ping.bat」,並從命令提示符調用ping.bat URL.txt

相關問題