0

如何使用设置变量在 bat 文件中复制文件。

[运行.bat]

set MY_WORKSPACE=workspace1.0.1
copy /Y /V D:\%MY_WORKSPACE%\webapp\target\app-generic.war C:\Opt\jboss-4.2.3.GA\server\default\deploy\

在上面的例子中,%MY_WORKSPACE% 是无效的,但是我可以通过使用 'echo' 查看该值

4

2 回答 2

3

这是您向我们展示的整个批处理文件吗?

我有一种模糊的感觉,你正在用一个块做一个set或类似的语句,例如copyif

if foo==bar (
  set MY_WORKSPACE=workspace1.0.1
  copy ...
)

在这种情况下,您需要延迟扩展才能使变量更改生效,因为括号中的块被解析为单个命令,并且所有变量都在解析时替换,而不是在运行命令时替换。因此%MY_WORKSPACE%,一旦块运行,它将是空的。

您可以通过使用解决此问题

setlocal enabledelayedexpansion

在批处理文件的顶部并使用!MY_WORKSPACE!而不是%MY_WORKSPACE%它将在运行命令之前扩展变量,而不是在解析时。

于 2012-04-18T13:05:07.187 回答
0

试试这个方法:

set MY_WORKSPACE="workspace1.0.1"
于 2012-04-18T07:22:53.253 回答