我收到ping响应时需要运行命令

时间:2017-06-18 23:27:39

标签: cmd

这个想法是新设备进入我的网络,在后台运行的脚本可以运行命令备份它,例如SyncToy(cd Program Files / SyncToy SyncToyCmd.exe -r)。

我从类似的问题(as the first just internally calls the second

中遇到了脚本
@setlocal enableextensions enabledelayedexpansion
@echo off
set ipaddr=%1
set oldstate=neither
:loop
set state=down
for /f "tokens=5,7" %%a in ('ping -n 1 !ipaddr!') do (
    if "x%%a"=="xReceived" if "x%%b"=="x1," set state=up
)
if not !state!==!oldstate! (
    echo.Link is !state!
    set oldstate=!state!
)
ping -n 2 127.0.0.1 >nul: 2>nul:
goto :loop
endlocal

然而,当状态变为" up"时,我无法弄清楚如何运行命令。作为循环中的一个例外,我也只想运行一次,每12小时添加一次条件。

1 个答案:

答案 0 :(得分:0)

这是否就像将命令放在测试接收的块中一样简单?我不明白SyncToy如何知道IP地址。

for /f "tokens=5,7" %%a in ('ping -n 1 !ipaddr!') do (
    if "x%%a"=="xReceived" if "x%%b"=="x1," (
        set state=up
        PUSHD "%ProgramFiles%/SyncToy"
        SyncToyCmd.exe -r
        POPD
    )
)