0

設定変数を使用して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」を使用して値を確認できます。

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 に答える