nul: 2>nul: -n cant be processed syntactically-6ren">
gpt4 book ai didi

batch-file - 批处理文件错误: "cant be processed syntactically at this point"

转载 作者:行者123 更新时间:2023-12-03 08:08:26 24 4
gpt4 key购买 nike

我的批处理文件程序总是在同一点崩溃。在它崩溃之前总是发生的是:

ping -n 6 127.0.0.1 1>nul: 2>nul:

-n cant be processed syntactically at this point.

if ping -n 1 127.0.0.1|find "(0" >nul && goto Loop

然后窗口关闭。

也许有人可以帮我解决问题吗?
这是整个脚本:
@setlocal enableextensions enabledelayedexpansion

:Loop

set ipaddr=127.0.0.1

ping -n 6 %ipaddr% >nul: 2>nul:

if ping -n 1 %ipaddr%|find "(0%" >nul && goto Loop

echo Connection lost

start "" http://www.google.com


else if ping -n 1 %ipaddr%|find "(100%" >nul && goto Loop

echo Connection OK

taskkill /FI "WINDOWTITLE eq google*" goto Loop

endlocal

最佳答案

这是一个高级版本,其中包含两个代码块,它们的执行取决于连接是正常还是丢失。

@setlocal enableextensions enabledelayedexpansion
set ipaddr=127.0.0.1
:Loop
ping -n 6 %ipaddr% >nul: 2>nul:
ping -n 1 %ipaddr%|find "(0%" >nul && (
echo Connection OK
taskkill /FI "WINDOWTITLE eq google*"
) || (
echo Connection lost
tasklist /v /fi "Windowtitle eq google*" || start "" http://www.google.com
)
goto :Loop

这是 %errorlevel% 和 if 的“常规方式” - else (同样的逻辑,上面只是一种更短的方法):
@setlocal enableextensions enabledelayedexpansion
set ipaddr=127.0.0.1
:Loop
ping -n 6 %ipaddr% >nul: 2>nul:
ping -n 1 %ipaddr%|find "(0%" >nul
if %errorlevel%==0 (
echo Connection OK
taskkill /FI "WINDOWTITLE eq google*"
) else (
echo Connection lost
tasklist /v /fi "Windowtitle eq google*" || start "" http://www.google.com
)
goto :Loop

我拿了 set ipaddr...跳出循环。不需要一次又一次地做。

(只是想知道,如果 Google 可以访问,如果连接丢失了......)

编辑以反射(reflect) last comment .有点增强,所以只有在连接状态发生变化时才会发生任何操作。如果您不需要它,请删除“日志”功能,或者如果您愿意,可以将它们重定向到一个文件。
@echo off
setlocal enabledelayedexpansion
set ipaddr=127.0.0.1
set "status=undefined"

:Loop
ping -n 2 %ipaddr% >nul: 2>nul:
ping -n 1 %ipaddr%|find "(0%" >nul && (

set oldstatus=!status!
set status=online
if !status! neq !oldstatus! (
echo %date% %time% Connection switched from !oldstatus! to !status!
taskkill /FI "WINDOWTITLE eq google*" >nul 2>&1
)

) || (

set oldstatus=!status!
set status=offline
if !status! neq !oldstatus! (
echo %date% %time% Connection switched from !oldstatus! to !status!
start "" http://www.google.com
)

)
goto :Loop

关于batch-file - 批处理文件错误: "cant be processed syntactically at this point",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34657786/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com