对于批处理文件中的循环 - 当以双引号给出文件名时失败

时间:2011-03-15 10:45:09

标签: scripting batch-file

我有一段用批处理文件编写的代码,用于在使用输入的文件夹名称中查找预定义文件。如果用户没有用双引号输入文件夹名称,这可以正常工作。但是当他输入双引号时,批处理文件中的for循环部分失败。

CODE:

FOR /F "usebackq delims=, skip=4" %%I IN (%A%\A.txt) DO ECHO %%I

当A的值以双引号给出时,它会失败并显示错误系统找不到文件F:\ KnoB“\ A.txt

1 个答案:

答案 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