在批处理脚本中,我可以检查如下文件的existens:
if exist "C:\myfile.txt" (
:: do some action here
)
我还可以检查以变量名存储的文件:
set MY_FILE="C:\myfile.txt"
if exist "%MY_FILE%" (
:: do some action here
)
不幸的是,如果文件名包含括号()
,则不起作用:
set MY_FILE="C:\Program Files (x86)\myfile.txt"
if exist "%MY_FILE%" (
:: do some action here
)
Batch以某种方式将文件路径中的括号解释为if语句的块。
如何在其路径中检查文件是否存在()
?
答案 0 :(得分:0)
好的,批处理脚本有时候只是令人困惑。我不知何故想出来了。
首先,我从SET
命令中删除了引号,因为文件路径是通过多次调用SET
来汇编的。谢谢你指出这一点。
其次,错误发生在()
语句的IF
括号内。我使用
echo MY_FILE:%MY_FILE%
这导致路径名中的括号在if块中被严重解释。我不完全确定,但我相信这可以与我的脚本开头启用setlocal enabledelayedexpansion
相关联。
将上述回声线更改为
echo MY_FILE:!MY_FILE!
现在一切正常。