我想從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
但你不是‘在Ant腳本藏在心裏,’當你有一個外部'.cmd',你需要執行設置環境變量。而且由於你依賴Ant之外的'.cmd',那麼在那裏有另外一個文件('.bat')是非常糟糕的嗎? 我真的會考慮將'.cmd'的功能首先移植到Ant中,並堅持自己的選擇,讓所有東西都保存在Ant中 – Slav
我是Ant新手,所以這是一種學習體驗。我儘可能在腳本中保留儘可能多的內容,而不會將此過程分解。我得到它與外部批處理文件,並沒有它看起來不那麼糟糕。 .cmd文件是一個巨大的專有腳本,我不想惹它,因此您將.cmd移植到Ant的建議不是一種選擇。我會給你的答案一個鏡頭,雖然,謝謝你的意見 –