2013-05-30 11 views
8

た上で、私が働いているコウモリのスクリプトコードブロックは、次のとおりです。コマンドは、バッチファイルでantコマンドの後に無視され

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ファイルには、このビルド\のファイル名を指定して実行]フォルダ内にあるように、私ant -qコマンドを実行する前に最初にビルド/実行するようにナビゲートしています(注:このナビゲーション方法は変更したくありません)。

  1. を条件として、環境変数を設定します。

    瞬間アリ-qコマンドは、物事が起こる以下が実行されます。

  2. \ Runをビルドするディレクトリを変更します。
  3. 私のbuild.xmlはRunディレクトリ内にあるので、ant -qコマンドは正しく動作します。
  4. Antは正しく実行され、antスクリプトは終了しません。
  5. 現在、私の現在のパスはbuild \ Runになります!正しい< =ここにアリが終了した後、私は私がcd../..

を使用した理由だ。しかし問題は、私はアリの後にコマンドを実行することはできませんよでビルド\のファイル名を指定して実行から出て来てほしい代わりに、これをしたくありません-q。これは、プログラムの制御がBATCH => ANTから始まる場合に発生します。

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

+1

注: 'SET PATH | "!ANT_HOME!;!ANT_BIN!" 'はあなたのパスを設定しません - あなたの追加がそこにあるかどうかだけを伝えます... – Stephan

答えて

17

実行中のantがバッチファイルそのものである場合があります。その場合、バッチファイル自体にチェーンされているだけです(返されません)。

あなたは代わりに、これを試してみてください:(チェーンではなく)

call ant -q 

は正しくあなたがそれを呼び出した後のポイントに戻りますバッチファイルを呼び出します。

+0

私の問題も修正されました!ありがとう! –

+0

素晴らしいソース!あなたは私の救い主だよT^T –

+0

完璧な解決策!スクリプトによって間違っていることを理解しようと苦労している。私のために働いた!まことにありがとうございます! –

関連する問題