在for / f的单行中运行多个命令

时间:2015-05-15 22:54:35

标签: batch-file cmd

我试图在Windows命令行(或批处理文件)中为/ f运行多个命令。这是展示问题的简化代码:

for /f "usebackq tokens=*" %a IN (`echo a & echo b`) do echo %a

这会显示错误消息:

& was unexpected at this time.

以下每项工作都很好:

for /f "usebackq tokens=*" %a IN (`echo a`) do echo %a
for /f "usebackq tokens=*" %a IN (`echo b`) do echo %a
echo a & echo b

所以我的问题是,是否可以按照我在单个for / f循环中尝试的方式运行两个命令。

感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:2)

您需要转义&,以便将其解析为子表达式的一部分,而不是作为FOR的一部分。将&更改为^&

for /f "usebackq tokens=*" %a IN (`echo a ^& echo b`) do echo %a

作为旁注,此行将在命令行中运行,但通常您打算将其放入批处理文件中。在批处理文件中,您需要将%a更改为%%a,同时将百分号加倍,如下所示:

for /f "usebackq tokens=*" %%a IN (`echo a ^& echo b`) do echo %%a