batch:检查文件是否存在"()"在它的道路上

时间:2015-12-10 13:37:22

标签: batch-file scripting

在批处理脚本中,我可以检查如下文件的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语句的块。

如何在其路径中检查文件是否存在()

1 个答案:

答案 0 :(得分:0)

好的,批处理脚本有时候只是令人困惑。我不知何故想出来了。

首先,我从SET命令中删除了引号,因为文件路径是通过多次调用SET来汇编的。谢谢你指出这一点。

其次,错误发生在()语句的IF括号内。我使用

回显了文件名的值
echo MY_FILE:%MY_FILE%

这导致路径名中的括号在if块中被严重解释。我不完全确定,但我相信这可以与我的脚本开头启用setlocal enabledelayedexpansion相关联。

将上述回声线更改为

echo MY_FILE:!MY_FILE!
现在一切正常。