2016-12-12 3 views
0

Ich habe vor kurzem die Jobs geändert und ich bekomme meine Hände schmutzig auf etwas Scripting, das ich schon immer lernen wollte. Ich habe eine vorhandene Batch-Datei erhalten und wollte sie in Ordnung bringen. Zuvor wurde mit dieser Stapeldatei eine IP-Adresse gescannt, die Sie zur Eingabe aufgefordert haben. Ich möchte dies ändern, um den Befehl basierend auf einer Liste von IP-Adressen aus einer Textdatei zu wiederholen, nur habe ich Probleme damit.Befehl ausführen basierend auf der IP-Adresse aus der Textdatei

Ich dachte, dass ich diese eine von zwei Arten tun:

1) Führen Sie eine Batchdatei, die die IP-Adresse erhalten wird, dann die zweite Partie auf dieser IP-Adresse auf Basis laufen.

OR

2) Verwenden Sie einfach die eine vorhandene Batchdatei und dass in jeder Zeile der Textdatei auf der Basis der IP-Adresse Schleife ändern.

Was wäre der bessere Weg, und wie würden Sie beides erreichen?

Für # 1 habe ich versucht, dies zu tun, aber ich weiß nicht, wie ich den Befehl basierend auf dem, was ich eingeben, ausführen. Ein Beispiel hierfür wäre die Ausführung von batch.bat 192.168.1.1, die in batch.bat versuchen würde, 192.168.1.1 (oder was auch immer eingegeben wird) zu pingen.

+0

Sie sollten Ihre Frage bearbeiten und Ihren Code hinzufügen – Hackoo

Antwort

0

Angenommen, Sie bereits eine Textdatei mit dem Namen haben: IP_List.txt mit diesem Inhalt:

192.168.1.1 
192.168.1.2 
192.168.1.3 
192.168.1.4 
192.168.1.5 
192.168.1.6 
192.168.1.7 
192.168.1.8 
192.168.1.9 
192.168.1.10 
192.168.1.11 
192.168.1.12 
192.168.1.13 
192.168.1.14 
192.168.1.15 
192.168.1.16 
192.168.1.17 
192.168.1.18 
192.168.1.19 
192.168.1.20 
www.google.com 
www.stackoverflow.com 

Sie einen Versuch für diese Batch-Datei geben kann: MultiPingTester.bat

enter image description here

@echo off 
Title Multi-Ping hosts Tester with colors by Hackoo 2016 
call :init 
set "MyFile=IP_List.txt" 
If Not exist %MyFile% goto error 
mode con cols=65 lines=30 
set "LogFile=PingResults.txt" 
If exist %LogFile% Del %LogFile% 
echo(
call :color 0E "  ------- Ping status of targets hosts -------" 1 
echo(
(
    echo ****************************************************** 
    echo PingTest executed on %Date% @ Time %Time% 
    echo ****************************************************** 
    echo(
) > %LogFile% 
Setlocal EnableDelayedExpansion 
for /f "usebackq delims=" %%a in ("%MyFile%") do (
    ping -n 1 %%a | find "TTL=" >nul 
    if errorlevel 1 (
     call :color 0C " Host %%a not reachable KO" 1 & echo Host %%a not reachable KO >>%LogFile% 
    ) else (
     call :color 0A " Host %%a reachable OK" 1 & echo Host %%a reachable OK >>%LogFile% 
    ) 
) 
EndLocal 
Start "" %LogFile% 
pause>nul & exit 
::************************************************************************************* 
:init 
prompt $g 
for /F "delims=." %%a in ('"prompt $H. & for %%b in (1) do rem"') do set "BS=%%a" 
exit /b 
::************************************************************************************* 
:color 
set nL=%3 
if not defined nL echo requires third argument & pause > nul & goto :eof 
if %3 == 0 (
    <nul set /p ".=%bs%">%2 & findstr /v /a:%1 /r "^$" %2 nul & del %2 2>&1 & goto :eof 
) else if %3 == 1 (
    echo %bs%>%2 & findstr /v /a:%1 /r "^$" %2 nul & del %2 2>&1 & goto :eof 
) 
exit /b 
::************************************************************************************* 
:error 
mode con cols=70 lines=3 
color 0C 
cls 
echo(
echo  ATTENTION !!! Check if the file "%MyFile%" exist ! 
pause>nul & exit 
::************************************************************************************* 
Verwandte Themen