1

実行しようとしているWindowsバッチファイルには、次の割り当てが含まれています。

set ANT_HOME="C:/Program Files/apache-ant-1.8.4"

問題のある行は次のとおりです。

call %ANT_HOME%/bin/ant -f ../config/common.xml start_db

そして、echoをオンにしてスクリプトを実行すると、次のようになります。

call "C:/Program_Files/apache-ant-1.8.4"/bin/ant -f ../config/common.xml start_db
Files/apache-ant-1.8.4""=="" was unexpected at this time.

2番目の引用符をアリの後のパスの最後に移動しましたが、同じエラーメッセージが表示されます。

4

2 に答える 2

5

antが.exeの場合、コードは機能するはずです。しかし、antはバッチファイルであり、antスクリプト内でエラーが発生していると思われます。

私はあなたのエラーメッセージ、特にその次の部分に基づいて結論を出します""==""。エラーメッセージはバッチ解析エラーであり、コードがこれらの文字をどのように生成できるかわかりません。したがって、antは問題の原因となっているバッチスクリプトである必要があると思います。

ant.batが@echo off一番上にあるのではないかと思うので、実際に失敗している行は表示されていません。

ant.batスクリプトにアクセスできないため、何が失敗しているのかを正確に診断することも、修正方法を推測することもできませんでした。

更新-正確な問題が見つかりました

オンラインでant.batのコピーを見つけました。

次のコード行が含まれています。

if "%ANT_HOME%"=="" set ANT_HOME=%DEFAULT_ANT_HOME%

ANT_HOMEの定義には引用符を囲むことが含まれているため、コードは実行しようとしています

if ""C:/Program Files/apache-ant-1.8.4""=="" set ANT_HOME=%DEFAULT_ANT_HOME%

スペースは引用符で囲まれておらず、エラーがあります。

すべてを修正するために必要なのは、ANT_HOMEの定義から引用符を削除してから、CALLステートメントに引用符を追加することだけです。

set "ANT_HOME=C:/Program Files/apache-ant-1.8.4"
call "%ANT_HOME%/bin/ant" -f ../config/common.xml start_db

スラッシュは、Windows内のフォルダー区切り文字として常に信頼できるとは限りません。Windowsのcmd.exeシェルがスラッシュ('/'')パス区切り文字を使用したパスで失敗するのはなぜですか?を参照してください。。

バックスラッシュを使用することをお勧めします。

set "ANT_HOME=C:\Program Files\apache-ant-1.8.4"
call "%ANT_HOME%\bin\ant" -f ..\config\common.xml start_db
于 2012-10-01T02:30:43.110 に答える
2

引用符はファイル名を完全に囲む必要があります。部分的な名前には使用できません。代わりにこれを試してください:

set ANT_HOME=C:\Program Files\apache-ant-1.8.4
call "%ANT_HOME%\bin\ant" -f ../config/common.xml start_db

ああ、私はあなたのスラッシュのいくつかをバックスラッシュに変更しました(DOSはフォワードスラッシュを好みません)。/ただし、渡すパラメータでの使用は許可されていると思います。

于 2012-10-01T01:56:26.177 に答える