2017-04-14 102 views
0

基本上,我有兩個單獨工作的.bat腳本,但是我想將這兩個腳本合併爲一個動作,因爲我已將它分配給一個熱鍵,並希望所有這些只需一次按下的一個鍵,而不是兩個,但是由於這些腳本位於不同的目錄中而有問題。蝙蝠腳本不工作的調用命令

下面是我的兩個腳本:

BLAH-Script.bat

RE4_UHD_BLAH_Tool.exe -p 
DEL /F /S /Q /A "F:\r101\r101_09.AEV" 

和第二個腳本:

UDAS_TOOL.bat

DEL /F /S /Q /A "F:\st1\rl01.udas" 
ping -n 1 localhost 
DEL /F /S /Q /A "F:\UDAS Tool\r101.udas" 
UDAS_Tool.exe -p 

現在,這兩個工作都很好,因爲每個腳本都會調用與調用它的腳本位於同一個DIR中的.exe文件,但試圖將它們放入一個.bat文件中並沒有使用CALL函數因爲其中一個腳本存在於外部目錄中。

我試圖做一個新的.bat腳本,將在一個執行這兩個蝙蝠腳本:

call "F:\pack\BLAH-Script.bat" 
ping -n 1 localhost 
call "F:\pack\UDAS\UDAS_TOOL.bat" 

然而,這並不work.The文件不受exe文件的工具打包成預期。

要嘗試找出我的腳本之間添加pause命令的問題:

call "F:\pack\BLAH-Script.bat" 
pause 
call "F:\pack\UDAS_TOOL.bat" 

這個命令讓我讀輸出窗口關閉之前取得了階段性的罪魁禍首。在第一個腳本我得到以下錯誤:

F:\ UD - R101 - > RE4_UHD_BLAH_Tool.exe -p 「RE4_UHD_BLAH_Tool.exe」不被識別爲內部或外部的命令, 可操作的程序或批處理文件。

我相信所發生的事情是,如果運行在自己的目錄,因爲它們是在同一個DIR因爲它們調用的.exe每個文件工作正常,但第一個.bat文件將不執行,因爲第三bat文件(即第一個調用第一個&的文件)與第一個不在同一個DIR中。

我曾嘗試:

CD /D "F:\pack" 
call "F:\pack\BLAH-Script.bat" 
pause 
CD /D "F:\pack" 
call "F:\pack\UDAS\UDAS_TOOL.bat" 

與同樣的錯誤。 如何獲得整理好的目錄?

+1

請告訴我們**發生了什麼** - 腳本做了什麼,它不應該做什麼,它做了什麼,它應該做什麼。 「不起作用」是一種無用的信息 - 如果有的話,你不會尋求幫助。我懷疑第一個腳本正在改變當前目錄,但沒有看到腳本和明確的描述,這只是一個猜測。 – Magoo

+0

我認爲你對目錄的想法是正確的,因爲兩個腳本都在不同的地方,因此引用。至於「不工作」,我現在要詳細說明我的問題。 –

+0

@Magoo好吧,我改進了問題以更好地反映問題。 –

回答

1

理論上,您可以完全限定可執行文件路徑,或者確保可執行文件位於path上。

但是,有些程序假設該可執行文件是在當前目錄下,並期望配置文件等也同樣在該目錄中,所以我會做的是

每批

,後初始化儀式(@echo off/setlocal ...)添加

pushd "actualexcutablelocation" 

,並確保從批量出口,

popd 

執行恢復到原來的目錄。

pushd將當前目錄切換到指定目錄,直到執行popd以返回原始目錄。

+0

這在第三個腳本中起作用。在每個命令之前添加'pushd「path_to_folder_that_contains_exe」來運行腳本。謝謝 –

+0

無法就「路徑指定」問題提出建議 - 您的計算機似乎覺得您指定的目錄不存在。請注意,引號不是必需的(我通過引用可能包含分隔符的目錄/文件名的原則包含它們) - 這可以通過使用編輯器來重新引用「智能引號」來引起,在這種情況下,使用一個像'notepad ++'或'editplus'(等等)的合適edito。就我個人而言,我會在每個批處理文件中放入'pushd/popd'括號,以便每個批處理可以獨立運行並且級聯它們就是'call batch1&call batch2' – Magoo