我有一段用批处理文件编写的代码,用于在使用输入的文件夹名称中查找预定义文件。如果用户没有用双引号输入文件夹名称,这可以正常工作。但是当他输入双引号时,批处理文件中的for循环部分失败。
CODE:
FOR /F "usebackq delims=, skip=4" %%I IN (%A%\A.txt) DO ECHO %%I
当A的值以双引号给出时,它会失败并显示错误系统找不到文件F:\ KnoB“\ A.txt
答案 0 :(得分:2)
从哪里获取文件夹名称?如果从命令行参数中获取它,则更改
set A=%1
到
set A=%~1
删除引号(如果存在)。
如果您是通过set /p
向用户阅读,请使用
set /P A=Folder?
for %%x in (%A%) do set A=%%~x
也是如此。
通常情况下,如果您从某个地方获得的值只使用一个百分比的变量(例如参数或for
循环),那么只需使用~
。
您还希望用引号括起for
循环的参数,以便带空格的文件夹名称不会引起令人不快的意外:
FOR /F "usebackq delims=, skip=4" %%I IN ("%A%\A.txt") DO ECHO %%I