set month = 10
for /f "tokens=*" %%i in (input.txt) do (
if /I not %%i == %month% (
echo %%i >> "output.txt"
)
)
任何人都可以告诉我为什么会这样,我怎么能比较" 10"。感谢
答案 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
)
)