2012-05-18 3 views
7

Я хотел бы запускать команды в пакетном файле на нескольких компьютерах.Как получить пакетный файл для ввода ввода из txt-файла?

Например:

@echo off 
ping %1 
pause 
exit 

Если пакетный файл называли pingme.bat и я типа pingme.bat yahoo.com тогда было бы пинг yahoo.com. Моя проблема в том, что я хочу, чтобы командный файл принимал входные данные из текстового файла.

Нравится pingme.bat computers.txt и будет читать имена компьютеров, перечисленных в файле, и выполнять любую команду, которую я укажу для них.

%1 принимает ввод, который я указываю при вводе командного файла, теперь я хотел бы, чтобы командный файл считывал строки в txt и выполнял его.

Строки в тексте находятся в форме списка, не используя запятую или что-то еще.

ответ

9

Один из способов сделать это было бы разместить URLS в текстовом файле так:

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, если пинг был успешным

@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 внутри 1-го цикла ?. Зачем вызывать подпрограмму во втором цикле? В обоих случаях вы замедляете ситуацию без причины, которую я вижу. – dbenham

+0

@dbenham Хорошая точка. Это было оставлено там после изменения скрипта для сообщения SO. Подпрограмма просто для организации. Спасибо. –

1

Вы можете использовать FOR цикл - сохранить это как pingme.bat:

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

и вызвать его с помощью текстового файла в качестве параметра pingme.bat computers.txt.

0

Для поиска IP-адреса многоразовые URL, в текстовый файл и получить выход в текстовом файле:

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

Сохранить сценарий как «ping.bat» и вызовите ping.bat URL.txt из командной строки.

Смежные вопросы