2012-05-18 5 views
7

Ich möchte Befehle in einer Batch-Datei auf mehreren Computern ausführen.Wie erhalte ich eine Batch-Datei, um Eingaben aus einer TXT-Datei zu akzeptieren?

Zum Beispiel:

@echo off 
ping %1 
pause 
exit 

Wenn diese Batch-Datei pingme.bat genannt wurde und ich tippe pingme.bat yahoo.com dann wäre es yahoo.com pingen. Mein Problem ist, dass die Batch-Datei Eingaben aus einer Textdatei akzeptiert.

Wie so pingme.bat computers.txt und es würde die Namen der Computer in der Datei aufgeführten und tun, was auch immer Befehl ich an sie getan werden soll.

%1 akzeptiert die Eingabe, die ich angeben, wenn ich die Batch-Datei, jetzt möchte ich die Batch-Datei, um die Zeilen in der TXT lesen und es tun.

Die Zeilen im Text sind in Listenform ohne Kommas oder irgendetwas.

Antwort

9

Eine Möglichkeit, dies zu tun wäre, die URLS in einer Textdatei wie so zu platzieren:

www.google.com
www.yahoo.com

Dann

die folgenden Batch-Lauf
for /f %%a in (%1) do (
echo Pinging %%a... 
ping %%a 
) 

und es von cmd laufen als pingme.bat URLs.txt

Alternativ Sie die Textdatei den Namen innerhalb der Charge angeben kann, und führen Sie es ohne den Parameter

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

Hier ist ein weiterer Ansatz

Diese besondere Charge aus der Liste ziehen, und schreiben output.txt, wenn der Ping-Test erfolgreich war

@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%" 

Hoffentlich Das bringt dich in die richtige Richtung.

+2

Warum SETLOCAL/ENDLOCAL innerhalb der ersten Schleife ?. Warum ein Unterprogramm in der 2. Schleife aufrufen? In beiden Fällen bremst du die Dinge aus keinem Grund, den ich sehen kann. – dbenham

+0

@dbenham Guter Punkt. Das war dort seit dem Ändern des Skripts für den SO-Post. Das Unterprogramm dient lediglich der Organisation. Vielen Dank. –

1

Sie eine FOR Schleife verwenden können - speichern diese als pingme.bat:

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

und mit der Textdatei als Parameter pingme.bat computers.txt nennen.

0

Um IP-Adressen mehrerer URLs in Textdatei zu finden und die Ausgabe in Textdatei zu erhalten:

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

Speichern Sie das Skript als „ping.bat“ und ping.bat URL.txt von der Eingabeaufforderung aufrufen.

Verwandte Themen