2016-12-12 17 views
0

私は最近仕事を変更しました。私はいつも学びたいと思っていたいくつかのスクリプトを手に入れました。私は既存のバッチファイルを与えられていて、それを欲しがっていました。これまでは、このバッチファイルは、入力を求められたアドレスのIPをスキャンします。テキストファイルからIPアドレスのリストに基づいてコマンドをループするようにこれを変更したいのですが、問題を解決するだけです。その後、テキストファイルのIPアドレスに基づいてコマンドを実行

1)IPアドレスを取得するバッチファイルを実行し、そのIPアドレスに基づいて、第二のバッチを実行します。

は、私は2つの方法のこのいずれかを実行できることを考え出し。

OR

2)ちょうど1つの既存のバッチファイルを使用して、テキストファイルの各行にIPアドレスに基づいて、ループにそれを変更します。

どのような方が良いでしょうか、両方をどのように達成しますか?

私はこれをやろうとしましたが、私が入力していることに基づいてコマンドを実行する方法がわかりません。これの例は、batch.bat 192.168.1.1を実行することです。これはbatch.batで、192.168.1.1(または何でも入力したもの)をpingしようとします。

+0

質問を編集してコードを追加する必要があります – Hackoo

答えて

0

既にという名前のテキストファイルがあるとします。この内容でIP_List.txt

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 

をあなたは、このバッチファイルのために試してみることができます。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 
::************************************************************************************* 
関連する問題