助けてくれてありがとう。
テキスト ファイルから IP アドレスのリストを単純に ping するバッチ ファイルを作成しようとしています。
次のコードを使用して実行できることはわかっています。
FOR /F %i in (yourFile.txt) DO yourcommand %i
フォーマットを使用して以下を作成しました。
::@echo off
pause
for /F %%a in (vlans.txt) do (
pause
ECHO Checking connection to subnet %%a, please wait....
PING -n 1 %%a|find "Reply from " >NUL
IF NOT ERRORLEVEL 1 goto :SUCCESS
IF ERRORLEVEL 1 goto :FAIL
:FAIL
ECHO Subnet %%a is unreachable
pause
:SUCCESS
ECHO Subnet %%a has passed!
pause
)
ECHO All subnets have now been tested....................
Pause
少し整理する必要があります。何が起こっているのかを確認できるように、@Echo off をコメントアウトしました。以下が出力されます。
C:\for /F "tokens=*" %a in (vlans.txt) do (
pause
ECHO Checking connection to subnet %a, please wait....
PING -n 1 %a | find "Reply from " 1>NUL
IF NOT ERRORLEVEL 1 goto :SUCCESS
IF ERRORLEVEL 1 goto :FAIL
ECHO Subnet %a is unreachable
pause
ECHO Subnet %a has passed!
pause
)
C:\>(
pause
ECHO Checking connection to subnet 10.169.169.129, please wait....
PING -n 1 10.169.169.129 | find "Reply from " 1>NUL
IF NOT ERRORLEVEL 1 goto :SUCCESS
IF ERRORLEVEL 1 goto :FAIL
ECHO Subnet 10.169.169.129 is unreachable
pause
ECHO Subnet 10.169.169.129 has passed!
pause
)
Press any key to continue . . .
Checking connection to subnet 10.169.169.129, please wait....
C:\>ECHO Subnet %a has passed!
Subnet %a has passed!
C:\>pause
Press any key to continue . . .
そのため、テキスト ファイル内のすべての IP アドレスを循環しないなど、理解できない、または予期していなかった多くのことが起こっています。最初は変数を入力せずに、次に変数を入力して繰り返します。また、バッチ ファイルが実行されると、一部の変数に IP アドレスが入力されません。
バッチ ファイルを作成するのは初めてなので、構文が間違っていることはわかっていますが、どこが間違っているのかわかりません。
vlan.txt には、IP アドレスのリストが 1 行に 1 つずつあります。
前もって感謝します。