0

私は現在、できれば一度に 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 環境でのテスト。

4

0 に答える 0