DOS批处理文件和变量扩展

时间:2012-08-21 00:59:17

标签: windows batch-file

我需要编写一个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 ...
)

例如,

  

设置\ A \ Release \ ASetup.msi将被复制到c:\ temp \目录名称,其中包含空格\ A \ ASetup.msi

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

(我可以使用辅助批处理文件 - 但这看起来不太优雅)

1 个答案:

答案 0 :(得分:2)

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

  1. 您在%%C%Setup.msi

  2. 中有一个迷路百分号
  3. 然后%%TARGET%中的双倍百分比 - 您只需要一个。

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

  5. 注意:我习惯使用了呼叫,即使你在这个例子中并不严格需要它。