私は現在、できれば一度に 1 つずつ、ホスト名のリストに ping を実行してから、そのホスト名で nslookup を使用しようとしています。nslookup のホスト名が最初に使用されたホスト名と一致する場合、その IP を使用して、場所を含む別のファイル (home.txt と呼ばれる) と照合したいと思います。
私がこれまでに持っているもの:
@Echo Off
If '%1'=='' GOTO Syntax
Echo Running Script and Saving Results to Results.CSV
Echo Script Run %date% %time% >> Results.csv
For /F %%i in (%1) do Call :StartPing %%i
Goto :eof
:StartPing
PING %1 -n 1 | FIND /i "TTL" > nul && goto Success
PING %1 -n 1 | FIND /i "timed" > nul && goto Timedout
PING %1 -n 1 -w 400 | FIND /i "TTL" > nul || goto ErrorMsg
:Success
for /F "tokens=3" %%a in ('ping %1 ^| find /i "TTL"') do set Address=%%a
for /F "tokens=2" %%a in ('ping -a %Address::=% ^| find /i "pinging"') do set HostName=%%a
set IPAddress=%Address::=%
echo %1, %IPAddress%,%Hostname%
echo %1, %IPAddress%,%Hostname% >> Results.csv
NSLOOKUP %IPAddress% | FIND /i "Name" = "%Hostname%" goto home
:home
echo %IPAddress% home.txt
Goto :EOF
:Timedout
Echo %1, Request timed out.
Echo %1, Request timed out. >> Results.csv
:ErrorMsg
Echo %1, Ping request could not find host.
Echo %1, Ping request could not find host. >> Results.csv
goto :eof
:Syntax
echo . . .
goto :eof
home.txt に含まれる内容の例:
10.102.6.43 = 2J
IE では、オフィスの場所にマッピングされた一連の IP 範囲にすぎません。
理想的には、スクリプトは IP アドレスの場所を示すポップアップ ボックスを作成するか、単に画面上に表示する必要があります。
何か案は?
いくつかの変更を加え、いくつかのことをテストしました。これが私がこれまでに持っているものです。
@echo Off
@cls
if '%1'=='' GOTO Syntax
echo Running Script and Saving Results to Results.CSV
echo Script Run %date% %time% >> Results.csv
for /F %%i in (%1) do Call :StartPing %%i
goto :EOF
:StartPing
PING %1 -n 1| FIND /i "TTL" > nul && goto Success
PING %1 -n 1| FIND /i "timed" > nul && goto Timedout
PING %1 -n 1 -w 400 | FIND /i "TTL" > nul || goto ErrorMsg
:Success
for /F "tokens=3" %%a in ('ping %1 ^| find /i "TTL"') do set Address=%%a
for /F "tokens=2" %%a in ('ping -a %Address::=% ^| find /i "pinging"') do set HostName=%%a
set IPAddress=%Address::=%
for /f "tokens=2" %%b in ('nslookup %IPAddress%^|find /i "Name"') do set fqdn=%%b
echo %1, %IPAddress%,%Hostname%
echo %1, %IPAddress%,%Hostname% >> Results.csv
goto :EOF
:Timedout
Echo %1, Request timed out.
Echo %1, Request timed out. >> Results.csv
:ErrorMsg
Echo %1, Ping request could not find host.
Echo %1, Ping request could not find host. >> Results.csv
goto :EOF
:Syntax
echo . . .
goto :EOF
:EOF
echo this is the END OF FILE
pause
hh.bat host.txt を実行するたびに、nslookup 部分に到達するまですべてが正常に実行され、Windows タスク マネージャーで 1500 ~ 3000 のプロセスが作成されます。NSLOOKUP 部分 hh.bat がなくても正常に動作します。
nslookup.bat と呼ばれる別のスクリプトに nslookup の部分がありましたが、これはしばらくの間正常に機能していましたが、今は機能しません。毎回その量のプロセスを作成します...
3 台の Windows 7 PC と DC を備えた Hyper-V 環境でのテスト。