【发布时间】:2013-02-04 18:30:03
【问题描述】:
我正在尝试编写一个带有几个参数的批处理文件,后跟一个或多个可选文件名(可能包括通配符),并在某些时候处理每个可选文件名,但 for 命令保留试图扩展它们,所以即使只是打印它们也行不通。
我查看了帮助 (for /?),但似乎没有任何开关可以防止这种情况发生。我尝试使用单引号、双引号和反引号以及 /f,但似乎没有任何效果。
以下命令按预期工作:
> for %i in (foo bar baz) do @echo %i
foo
bar
baz
以下命令不会:
> for %i in (foo bar baz really?) do @echo %i
foo
bar
baz
以下,甚至更少:
> ren > reallyz
The syntax of the command is incorrect.
> dir /b really*
reallyz
> for %i in (foo bar baz really?) do @echo %i
foo
bar
baz
reallyz
有没有办法让 Windows 命令解释器将传递的列表视为字符串,而不是尝试将其解释为文件名通配符?
【问题讨论】:
-
您是否尝试过使用插入符号“^”转义问号,如 (foo bar baz really^?)在命令行上运行与从批处理文件运行时更改。
-
是的,转义它不起作用(此外,即使它确实如此,那么用户在调用批处理文件时必须记住转义它们,这当然是一个不理想的接口,因为它与传递文件名的其他用途不一致)。
标签: for-loop batch-file wildcard command-prompt wildcard-expansion