Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String “上的批处理合成错误”;至于-陈述_String_Batch File_Syntax Error - Fatal编程技术网

String “上的批处理合成错误”;至于-陈述

String “上的批处理合成错误”;至于-陈述,string,batch-file,syntax-error,String,Batch File,Syntax Error,我正在尝试使用批处理自动化一个小的deploymentscript。它只更新SVN回购协议,然后使用ant构建和上传。之后,它通过SSH连接到服务器,使用plink重新启动服务器。 一切正常。现在的问题是,当我试图解析Serverstats以查看相关服务器是否已备份时,我得到了一个语法错误。 以下是相关的代码片段: SET c=0 SET problem=false echo outer for /f "delims=" %%i in ('plink.exe -v -ssh %uID%@%ser

我正在尝试使用批处理自动化一个小的deploymentscript。它只更新SVN回购协议,然后使用ant构建和上传。之后,它通过SSH连接到服务器,使用plink重新启动服务器。 一切正常。现在的问题是,当我试图解析Serverstats以查看相关服务器是否已备份时,我得到了一个语法错误。 以下是相关的代码片段:

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

您可以通过使用在顶部启用延迟扩展来解决该问题
设置本地启用延迟扩展
,并使用
!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
)

你能举例说明变量中的值吗?(uID、serveraddress、pw、command和string)只要看一眼,我猜其中一个变量中的一个特殊字符就是造成问题的原因。但是,您还需要为
实现DelayedExpansion!c
variable并将算术标志添加到set命令
set/a c+=1
唯一可以出现的特殊字符是用户名中的#。那会是个问题吗?