設定変数を使用して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」を使用して値を確認できます。
設定変数を使用して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」を使用して値を確認できます。
それはあなたが私たちに見せているバッチファイル全体ですか?
私はあなたがブロックを使って、または同様のステートメントを実行している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"