gpt4 book ai didi

string - “for” -statement上的批处理语法错误

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

我正在尝试使用批处理来自动化一些部署脚本。它仅更新SVN存储库,然后使用ant进行构建和上传。之后,它使用plink通过SSH通过SSH连接到服务器以重新启动服务器。
一切正常。现在的问题是,当我尝试解析Serverstats时,要查看是否备份了相关的服务器,则会收到Syntaxerror。
这是相关的代码片段:

SET c=0
SET problem=false
echo outer
for /f "delims=" %%i in ('plink.exe -v -ssh %uID%@%serveradress% -pw %pw% %command%') do (
echo inner
if %c% GEQ 3 (
if %c% LEQ 8 (
echo(%%i|findstr /r /c:"up" >nul && (
) || (
set problem=true
)
)
)
set c+=1
)
echo %problem%

这是此代码段的输出:
...>SET c=0
...>SET problem=false
...>echo outer
outer
")" not processable syntactically (translated from german. It probably says something else in english)
...> )||(

最佳答案

您收到语法错误,因为您的&&( )没有命令。您可以使用&&(rem),也可以完全删除&&并直接转到||(...)

但是你仍然有问题。解析该行后,将扩展%c%发生者,并且一次分析了整个FOR DO()循环。因此,%c%的值不会随每次迭代而改变-它保持进入循环之前设置的恒定值0。

您可以通过使用以下命令在顶部启用延迟扩展来解决该问题setlocal enableDelayedExpansion,并使用!c!代替%c%

您可以通过故意使用零除错误来查看c是否在3-8的范围内,从而避免延迟扩展。

以下:

2>nul set /a "1/((c/3)*!(c/9))" && (
rem do something
)

等效于:
if !c! geq 3 if !c! leq 8 (
rem do something
)

关于string - “for” -statement上的批处理语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27549669/

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