此批处理脚本中的语法错误是什么?

时间:2011-09-16 20:09:32

标签: batch-file substring

我正在尝试从字符串中获取子字符串并检查它是否等于“System”。我从%% a获取字符串。当我运行脚本时,我得到错误“意外(”。如果我删除for循环中的行(“set _varsub ...”)错误消失。所以我认为我的substring命令有一些语法错误。可以有谁告诉我?

  for /f "tokens=1,3,4,* delims=: " %%a in ('e:\DeployTools\handle.exe %deploymentdir%\%%i ^| findstr /i pid: ')  do @(


        set _varsub=%%a
        set _varsub=%_varsub:~0,6%
        if not %_varsubstring%==System (

        // do something
      )

2 个答案:

答案 0 :(得分:1)

尝试在if语句中添加引号

如果不是'%_varsubstring%'=='系统'(...

意外错误是因为_varsubstring在此时未定义,因此该行的计算结果为:

如果不是==系统(

答案 1 :(得分:1)

就像scottknight写的那样,你的代码会因为没有定义变量而失败,
但即便如此,它也会失败,因为括号内的扩展不适用于百分比 在您的情况下,您应该使用带有感叹号的延迟扩展。

set _varsub=%%a
set _varsub=!_varsub:~0,6!