2014-04-04 36 views
0

我想從Ant腳本啓動.exe。 .exe要求首先運行.cmd文件以準備環境。要清楚:如果我打開控制檯,首先運行.cmd,然後運行.exe,一切正常。我在Windows 7工作。在.cmd文件設置的環境中執行Ant目標

這是我目前有,但它不工作,我假設因爲.cmd作爲自己的進程運行,並且當控制權返回到Ant時,我已經失去了範圍下一個目標運行並且不知道.cmd文件中發生的任何事情。或者至少這似乎正在發生。

我已經搞砸了不同的cmd開關,產生真/假等,但沒有什麼真的似乎工作,我不知道什麼谷歌看到這種情況的工作示例。

<target name="-someTarget"> 
    <exec executable="cmd" spawn="false"> 
    <arg value="/c" /> 
    <arg value="somefile.cmd" /> 
    </exec> 
    <exec executable="some.exe" spawn="false"> 
    <arg value="-whatever" /> 
     <arg value="somevalue" /> <!-- etc. --> 
    </exec> 
</target> 

這是我現在的解決方法,但如果可能的話,我寧願將所有內容放在我的Ant腳本中。

<target name="-someTarget"> 
    <exec executable="cmd" spawn="false"> 
    <arg line='/c somefile.bat "c:\some path\" an-arg "c:\another path\.txt" "c:\and another\.log"' /> 
    </exec> 
</target> 

somefile.bat:

call %1\somefile.cmd 
call %1\some.exe %2 %3 %4 
+0

但你不是‘在Ant腳本藏在心裏,’當你有一個外部'.cmd',你需要執行設置環境變量。而且由於你依賴Ant之外的'.cmd',那麼在那裏有另外一個文件('.bat')是非常糟糕的嗎? 我真的會考慮將'.cmd'的功能首先移植到Ant中,並堅持自己的選擇,讓所有東西都保存在Ant中 – Slav

+0

我是Ant新手,所以這是一種學習體驗。我儘可能在腳本中保留儘可能多的內容,而不會將此過程分解。我得到它與外部批處理文件,並沒有它看起來不那麼糟糕。 .cmd文件是一個巨大的專有腳本,我不想惹它,因此您將.cmd移植到Ant的建議不是一種選擇。我會給你的答案一個鏡頭,雖然,謝謝你的意見 –

回答

0

'arg l由斯拉夫建議INE =」方法,只要在DOS命令調用使用的作品:

<exec executable="cmd"> 
    <arg line="/c call some.cmd &amp; call some.exe" /> 
</exec> 
0

可以在同一命令行上同時調用

<exec executable="cmd"> 
    <arg line="/c somefile.cmd &amp;"/> 
    <arg value="some.exe"/> 
    <arg value="-whatever"/> 
    <arg value="somevalue"/> 
    <!-- etc. --> 
</exec> 

的原因<arg line>是,你不能只是提供給&amp;<arg value> (至少那不適合我)

+0

同樣的問題,這種方法,CMD跑了,但沒有堅持。這個exe在下一步中並不知道:「用戶環境沒有充分準備好繼續執行。」 etc. –

+0

我想我已經嘗試過這種方法,說實話。我做了很多不同的事情組合,很難說:) –

+0

我終於明白了。我在some.exe之前需要一個「電話」。 –