12

以下は、私が取り組んでいるバット スクリプト コード ブロックです。

ECHO off 

IF NOT EXIST "%ANT_HOME%" (   

    SET ANT_HOME=%~dp0%build\apache-ant-1.8.2
    SET ANT_BIN=%~dp0%build\apache-ant-1.8.2\bin

    SET PATH | FIND "%ANT_HOME%;%ANT_BIN%"
)
cd "build\Run"
ant -q

cd ../..
echo "Program Terminated!"
exit

ここで、私の build.xml ファイルはこの build\Run フォルダー内にあるため、ant -q コマンドを実行する前に、最初に build/Run に移動します (注: この移動方法を変更したくありません)。

ant -q コマンドが実行された瞬間、次のことが起こります。

  1. 環境変数を条件として設定します。
  2. ディレクトリを build\Run に変更します。
  3. 私の build.xml は Run ディレクトリ内にあるため、ant -q コマンドは正しく実行されます。
  4. Ant は正しく実行され、Ant スクリプトは終了しません。
  5. 現在のパスは build\Run になります! 正しい <= ここでは、ant が終了した後はこれを望んでいません。代わりに、build\Run から抜け出したいので、使用しましたcd../..

しかし問題は、ant -q の後にコマンドを実行できないことです。これは、プログラム制御が から行われる場合に発生しますBATCH => ANT

バットスクリプト自体からのantコマンドの後にコマンドを実行する方法はありますか?

4

1 に答える 1

21

ant実行されているのはバッチ ファイル自体であることがわかる場合があります。その場合、単純にそれにチェーンされます (リターンはありません)。

代わりにこれを試してください:

call ant -q

(連鎖ではなく) バッチ ファイルを呼び出すと、それを呼び出した時点に正しく戻ります。

于 2013-05-30T08:25:10.453 に答える