' 10'不被识别为内部或外部命令,可操作程序或批处理文件

时间:2017-10-30 04:42:31

标签: batch-file

set month = 10
for /f "tokens=*" %%i in (input.txt) do (
    if /I not %%i == %month% (
        echo %%i >> "output.txt"
    )
)

任何人都可以告诉我为什么会这样,我怎么能比较" 10"。感谢

1 个答案:

答案 0 :(得分:2)

set命令中的空格非常重要。 set month = 10将创建一个名为"month "的变量(后面有空格),其值为" 10"(前面有空格)。只需尝试echo %month %并查看

即可

由于变量%month%不可用,if /I not %%i == %month% (将展开为if /I not %%i == (,这会导致语法无效。另一个教训:始终用if包围""参数,因此如果变量扩展为空字符串,它仍然可以正常工作

此外,为避免每行都包含尾随空格,您应该将重定向移到命令之前

最终结果将是这样的

set month=10
for /f "tokens=*" %%i in (input.txt) do (
    if /I not "%%i" == "%month%" (
        >>"output.txt" echo %%i
    )
)