我想知道当文件夹包含外来字符时是否可以测试目录的存在。我一直在努力解决这个问题,但没有找到解决方案,也没有得出结论,为什么在从批处理文件内部进行测试时这不起作用。 有趣的是,只有在使用变量进行测试时才会失败。 有人有什么想法吗? 谢谢!
这是我用于分析的批处理文件示例:
@ECHO OFF
SETLOCAL EnableExtensions DisableDelayedExpansion
CLS
CHCP 65001
SET "Folder=%~1"
IF EXIST "C:\μTorrent Pro" ECHO Folder present & ::This line actually works
IF EXIST %Folder% ECHO Folder present & ::This line fails
你有一个错字。您需要使用
SET "Folder=%~0"
来获取脚本的当前文件路径。如果您需要脚本所在的目录(“文件夹”),请使用:SET "Folder=%~f0"
。
%0
是脚本本身。 %1
是第一个 CLI 参数。 %2
第二个,依此类推。 ~
从输入中删除引号。您应该始终在 CLI 上使用引号来处理路径名中的空格。因此,如果您使用 my_batch.cmd "C:\μTorrent Pro\"
运行脚本,也应该可以工作。
我也能在没有
CHCP 65001
的情况下跑步。
附加:使用
REM
发表评论。 ::
只是一个空标签,并不是为此目的。