如何使用set变量复制bat文件中的文件。
[run.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'看到该值
答案 0 :(得分:3)
这是您向我们展示的整批文件吗?
我有一种模糊的感觉,你在set
内部copy
和if
或带有一个块的类似声明,例如。
if foo==bar (
set MY_WORKSPACE=workspace1.0.1
copy ...
)
在这种情况下,您需要延迟扩展才能使变量生效生效,因为括号中的块被解析为单个命令,并且所有变量都在 parse 时被替换,而不是在runnin命令时。因此,一旦块运行,%MY_WORKSPACE%
将为空。
您可以使用
解决此问题setlocal enabledelayedexpansion
位于批处理文件的顶部,并使用!MY_WORKSPACE!
代替%MY_WORKSPACE%
,这将在运行命令之前扩展变量,而不是在解析时。
答案 1 :(得分:0)
尝试这种方式:
set MY_WORKSPACE="workspace1.0.1"