2017-04-17 95 views
0

witha批處理文件我想安裝四個exe的exe1.exe,exe2.exe,exe3.exe和exe4.exe我用下面的命令來安裝它們我想安裝四個exe的一個接一個使用批處理文件

@echo off 
echo %time% 
timeout 1 

start /wait /b "C\Softwares\exe1.exe" /t |more 
start /wait /b "C\Softwares\exe2.exe" /t |more 
start /wait /b "C\Softwares\exe3.exe" /t |more 
start /wait /b "C\Softwares\exe4.exe" /t |more 

echo %time% 

與上述腳本我正在實現任務,但一次4個exe的所有安裝嚮導開放。我想在exe1.exe安裝完成後打開exe2.exe安裝嚮導,併爲其餘的exe文件也一樣。

需要幫助解決等待任何人回覆的問題。提前致謝。

+0

你的標題說,兩個文件但後來你說約四...無論如何,你的可執行文件沒有控制檯應用程序,這是這裏的問題,我想...... – aschipfl

+1

我想你也許應該尋找一旦安裝完成,就會實現一些條件:僅在安裝完成時創建的文件/文件夾,證明其安裝正確的寄存器,檢查它安裝的程序是否在已安裝軟件列表中,... 。一旦你找到了這個條件,你可以輪詢它,讓nxt exe只有在滿足條件時才啓動。閱讀安裝程序的幫助信息(如果有的話)或者exe文件可以幫助您找到我認爲的這些條件。這是我不幸的唯一建議。 –

+0

感謝您的建議,可以請給我一個例子@ J.Baoby –

回答

1

這不是試圖回答。這是要求進一步澄清的the comment of the OP的答案。雖然在這裏解釋的部分可能會導致答案。

所以,我的意思基本上是這樣:(?或失敗)

start /wait /b "C\Softwares\exe1.exe" /t |more 
< WAIT HERE ON CONDITION FOR exe1 > 

start /wait /b "C\Softwares\exe2.exe" /t |more 
< WAIT HERE ON CONDITION FOR exe2 > 

start /wait /b "C\Softwares\exe3.exe" /t |more 
< WAIT HERE ON CONDITION FOR exe3 > 

start /wait /b "C\Softwares\exe4.exe" /t |more 

如果每個< WAIT HERE ON CONDITION FOR exeN>必須以某種循環,不斷驗證證明爲內胚安裝是否成功的替代。然後可以使用IF聲明將該證明批量轉換爲條件,並且可以使用goto完成循環。

:WaitLoopExeN 
IF NOT <condition_exe_N> (
    REM Use a timeout to wait before verifying again, else it may take too much resources 
    timeout 5 > nul 
    goto :WaitLoopExeN 
) 

至於如果你按照IF -link您可能會看到,你可以用IF聲明確認條件的數量相當有限。但除批處理if語句(變量比較和文件存在)的基本條件外,如果您可以找到驗證您的條件/證明並正確設置其退出代碼和錯誤級別的命令(在大多數情況下,兩者都相同),你至少可以確定你可以用IF ERRORLEVEL構造將它變成IF陳述。

舉一個例子,讓我們考慮一下安裝完成後,您的exe1.exe安裝程序在密鑰ROOT\SOME\KEY\FOR\EXE1中創建註冊表EXEC_DIRECTORY。登記處的存在將成爲你的證據,條件將是「如果登記處存在」。不幸的是,我沒有發現有關批次IF的聲明,直接驗證了這一點。但是存在查詢註冊表的命令:REG QUERY。所以下面應該能夠取代< WAIT HERE ON CONDITION FOR exe1 >

:WaitLoopExe1 
REM Query the registry, will set errorlevel on 1 or greater if it didn't succeed 
REG QUERY ROOT\SOME\KEY\FOR\EXE1 /v EXEC_DIRECTORY > nul 
REM Now verify errorlevel 
IF ERRORLEVEL 1 (
    timeout 5 > nul 
    goto :WaitLoopExe1 
) 

如果另一方面文件的存在/目錄是它本來的安裝exe1.exe的成功的證明:

:WaitLoopExe1 
REM Verify if file exists, if not enter inside the parenthesis 
IF NOT EXIST "path\to\file\that\proofs\success" (
    timeout 5 > nul 
    goto :WaitLoopExe1 
) 

我希望這會有所幫助。
好運

相關問題