我想创建批处理文件来从办公室的工作站(RDP 主机)ping 我的 PC(RDP 客户端),但我的 PC IP 每次连接都会改变(因为使用了 VPN)
所以我想将我在互联网上找到的这两个命令合并到我的批处理文件中
netstat -n | find ":3389" | find "ESTABLISHED"
结果:
TCP yyy.yyy.yyy.yyy:3389 xxx.xxx.xxx.xxx:57893 已建立
并将 xxx.xxx.xxx.xxx 值(我的电脑 IP)移动到以下命令
ping -t xxx.xxx.xxx.xxx|cmd /q /v /c "(pause&pause)>nul & for /l %%a in () do (set /p "data=" && echo(!date! !time! !data!)&ping -n 2 xxx.xxx.xxx.xxx>nul"
因此我的 ping 结果将是这样的:
Thu 11/12/2020 15:42:04.69 Reply from xxx.xxx.xxx.xxx: bytes=32 time=29ms TTL=125
答案1
您将需要循环两次for
以获得所需的输出,一次获取并使用命令的输出netstat
,另外一次编写ping
命令:
@echo off
title <nul & title ..\%~nx0
%__AppDir__%mode.com concols=82lines=10
%:^0 < :: loop replace flag "-t" in ping.exe cmd :: >
for /f skip^=1tokens^=4delims^=:^ %%i in ('^^^< nul ^^^
%__AppDir__%netstat.exe -n^|%__AppDir__%find.exe ":3389"^|%__AppDir__%find.exe "ESTABLISHED"
')do for /f tokens^=* %%I in ('%__AppDir__%ping.exe -n 1 -4 %%i^|%__AppDir__%find.exe "from"
')do ^<nul ^ <con: "%__AppDir__%cmd.exe" /q /v:on /c "echo= !date! !time! %%~I" && goto %:^0