我对此很陌生,所以请耐心等待,如果您需要我的信息,请说出来。在此先感谢您的帮助。
我有这个代码,ping不同的PC然后返回,如果他们在线/离线。我想知道你是否可以在bat文件运行ping测试后添加另一个列,因此它旁边有计算机名称。
@echo off
if exist C:\tools\computers.txt goto Label1
echo.
echo Cannot find C:\tools\computers.txt
echo.
Pause
goto :eof
:Label1
echo PingTest executed on %date% at %time% > C:\tools\z.txt
echo ================================================= >> C:\tools\z.txt
for /f %%i in (C:\tools\computers.txt) do call :Sub %%i notepad C:\tools\z.txt
goto :eof
:Sub
echo Testing %1 set state=alive ping -n 1 %1 | find /i "bytes=" || set state=dead echo %1 is %state% >> C:\tools\z.txt
bat文件创建一个显示以下内容的文档;
PingTest于2016年7月28日13:10:28执行
99.1.82.28还活着
99.1.82.100还活着
等。
如果可能,我希望运行bat文件,以便显示此内容;
bat文件创建一个显示以下内容的文档;
PingTest于2016年7月28日13:10:28执行
计算机1:99.1.82.28还活着
计算机2:99.1.82.100还活着
等。
-
感谢任何帮助&对此的指导。
感谢。
答案 0 :(得分:0)
您可以尝试此解决方案:
git commit
编辑:2016年7月29日@ 12:48
另一种多色版本:特别感谢 ICARUS 的色彩功能(--_°)
@echo off
Title Ping Test
set "URLS=URLS.txt"
set "LogFile=PingResults.txt"
If exist %LogFile% Del %LogFile%
(
echo ******************************************************
echo PingTest executed on %Date% @ Time %Time%
echo ******************************************************
echo(
) > %LogFile%
Setlocal EnableDelayedExpansion
for /f "usebackq delims=" %%a in ("%URLS%") do (
for /f "tokens=2 delims=[]" %%b in ('ping -n 1 %%a') do set "ip=%%b"
ping -n 1 %%a>nul && set "msg=%%a : !ip! ALive ok" || set "msg=%%a : !ip! Dead failed to respond"
echo !msg!
echo !msg! >> %LogFile%
)
)
EndLocal
Start "" %LogFile%
pause>nul & exit
编辑:2016年8月23日更新