如何使用设置变量在 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' 查看该值
如何使用设置变量在 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' 查看该值
这是您向我们展示的整个批处理文件吗?
我有一种模糊的感觉,你正在用一个块做一个set
或类似的语句,例如copy
if
if foo==bar (
set MY_WORKSPACE=workspace1.0.1
copy ...
)
在这种情况下,您需要延迟扩展才能使变量更改生效,因为括号中的块被解析为单个命令,并且所有变量都在解析时替换,而不是在运行命令时替换。因此%MY_WORKSPACE%
,一旦块运行,它将是空的。
您可以通过使用解决此问题
setlocal enabledelayedexpansion
在批处理文件的顶部并使用!MY_WORKSPACE!
而不是%MY_WORKSPACE%
它将在运行命令之前扩展变量,而不是在解析时。
试试这个方法:
set MY_WORKSPACE="workspace1.0.1"