Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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
If statement 在批处理文件中包含子字符串的嵌套IF命令失败_If Statement_Cmd_Syntax Error_Substring - Fatal编程技术网

If statement 在批处理文件中包含子字符串的嵌套IF命令失败

If statement 在批处理文件中包含子字符串的嵌套IF命令失败,if-statement,cmd,syntax-error,substring,If Statement,Cmd,Syntax Error,Substring,好的,我开始编写一个短批处理文件来检查文件内容行的单个长度,但在尝试检查行是否等同于自身的子字符串(即是否太长)时,会出现以下错误: 76Phrase] was unexpected at this time. 以下是正在运行的内容: IF EXIST file.ini ( FOR /F "tokens=*" %%p IN (file.ini) DO ( ... SET Phrase=%%p ... IF [%Phrase

好的,我开始编写一个短批处理文件来检查文件内容行的单个长度,但在尝试检查行是否等同于自身的子字符串(即是否太长)时,会出现以下错误:

76Phrase] was unexpected at this time.
以下是正在运行的内容:

IF EXIST file.ini (
    FOR /F "tokens=*" %%p IN (file.ini) DO (
        ...
        SET Phrase=%%p
        ...
        IF [%Phrase:~0,76%] EQU [%Phrase%] (
            ...
        )
    )
)
我尝试过使用()、“”、“”,但与[]相反,什么都没有,但它只是抛出了另一个错误

我做错什么了吗?我已经有一段时间没有真正使用cmd了。

您需要在这里,因为
%
变量在解析时展开,而不是在运行时展开

setlocal EnableDelayedExpansion

...

IF EXIST file.ini (
  FOR /F "tokens=*" %%p IN (file.ini) DO (
    ...
    SET "Phrase=%%p"
    ...
    IF [!Phrase:~0,76!] EQU [!Phrase!] (
      ...
    )
  )
)
setlocal EnableDelayedExpansion
...
如果存在文件.ini(
对于(file.ini)中的/F“tokens=*”%%p,请执行以下操作(
...
设置“短语=%%p”
...
如果[!短语:~0,76!]eq[!短语!](
...
)
)

)
您需要使用延迟扩展和!变量如果要在循环内操作数据,请设置格式

您可能会发现这更容易检查长字符串

IF not "!Phrase:~76,1!"=="" echo too long

对不起,当我写我删除的评论时,我一定是暂时失去了理智。我觉得。真蠢。嗯,接受了另一个人的,因为你已经是男人中的上帝了。