1

我需要编写一个 DOS 批处理文件,它在概念上是这样做的:

SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
SET TARGET=c:\Temp\directory name with spaces\
FOR %%C IN (A B C D ) DO (
   copy "Setups\%%C\Release\%%C%Setup.msi"  "%%TARGET%\%%C"
   echo Similar commands ...
)

例如,在哪里,

Setups\A\Release\ASetup.msi 将被复制到 c:\temp\directory name with spaces\A\ASetup.msi

我遇到的问题是命令处理器非常反直觉地解析它并且不会产生预期的(甚至是有用的)结果。这可能在单个命令文件中吗?

(我可以使用辅助批处理文件来做到这一点 - 但这似乎不优雅)

4

1 回答 1

2

call copy "Setups\%%C\Release\%%CSetup.msi" "%TARGET%\%%CSetup.msi"

  1. 你有一个杂散的百分比登录%%C%Setup.msi

  2. 然后是双倍的百分比%%TARGET%——你只需要一个。

  3. 您在目标文件名的末尾缺少 Setup.msi。

注意:我也习惯性地使用了 call,尽管在这个例子中你并不严格需要它。

于 2012-08-21T01:07:13.027 回答