2009-06-25 110 views
15

我有一個批處理文件,它將檢測用戶是否通過轉到目錄安裝.Net框架並檢查CONFIG目錄是否存在。批處理文件在移動到下一行之前等待安裝完成

如果該目錄不存在,那麼用戶沒有安裝.Net框架。該批處理文件將繼續安裝.Net框架。但是,在運行安裝程序安裝我的撥號程序之前需要安裝.Net框架時出現問題。所以我已經放了一個PAUSE語句,這樣用戶就可以在安裝框架後按任意按鈕繼續。

但是,我們的客戶不喜歡這個,因爲他們的一些客戶不理解,他們在框架完成安裝之前按下了一個鍵。這會導致安裝失敗,因爲框架尚未先安裝。

我正在使用等待用戶輸入的PAUSE。然而,有沒有辦法讓批處理等待框架自動完成,而不是使用PAUSE命令?

非常感謝您的任何建議,

@ECHO OFF 
REM Copy the configuration file 
copy config.xml "%AppData%\DataLinks.xml" 

REM Search for the CONFIG file, if this doesn't exit then the user doesn't have the .Net framework 2.0 
SET FileName=%windir%\Microsoft.NET\Framework\v2.0.50727\CONFIG 
IF EXIST %FileName% GOTO INSTALL_DIALER 
ECHO.You currently do not have the Microsoft(c) .NET Framework 2.0 installed. 
ECHO.This is required by the setup program for MyApplication. 
ECHO. 
ECHO.The Microsoft(c) .NET Framework 2.0 will now be installed on you system. 
ECHO.After completion setup will continue to install MyApplication on your system. 
ECHO. 
REM Install the .Net framework and wait for the user to input before install the dialer 
PAUSE 
ECHO Installing... Please wait... 
SET FileName = 
Start .\NetFx20SP2_x86.exe 
ECHO Once the .Net Framework has completed. Press any key to continue to install the dialer. 
PAUSE 
Start .\setup.exe 
ECHO ON 
EXIT 

REM .Net framework has been skipped contine to install the dialer. 
:INSTALL_DIALER 
ECHO *** Skiped Dotnet Framework 2.0.50727 *** 
ECHO Installing... Please wait... 
SET FileName= 
Start .\setup.exe 
ECHO ON 
EXIT 

回答

12

可以使用

START /WAIT NetFx20SP2_x86 

了。 記得

REM comment 

等於

::comment 

和使用。\是不必要的,文件擴展名,除非它是文件/目錄與名稱衝突。 你也不需要清洗的「文件名」變量兩次(以下簡稱「=」指向沒什麼兩次)和

ECHO.something 

等於

ECHO something 

只除了空行

+0

你好,這裏的所有解決方案都有效。但是,我想知道在WAIT命令前面的反斜槓是什麼意思,即/ WAIT – ant2009 2009-06-25 04:26:13

2

只是刪除從通話起始行,像這樣:

.\NetFx20SP2_x86.exe 
Start .\setup.exe 

這將使安裝阻塞,如在批處理文件將停止處理,直到NetFx20SP2_x86.exe程序終止。

3

你也可以使用

START /WAIT NetFx20SP2_x86.exe 

斜槓是表明它是一個選項來啓動命令,而不是目標文件。看多了這些選項,看here(我要提到它作爲一個「正斜槓」)

2

好吧,我優化您的腳本,排序:

@echo off 
rem Copy the configuration file 
copy config.xml "%AppData%\DataLinks.xml" 

rem Search for the CONFIG file, if this doesn't exist then the user doesn't have the .Net framework 2.0 
if not exist "%windir%\Microsoft.NET\Framework\v2.0.50727\CONFIG" (
    echo You currently do not have the Microsoft(c) .NET Framework 2.0 installed. 
    echo This is required by the setup program for MyApplication. 
    echo. 
    echo The Microsoft(c) .NET Framework 2.0 will now be installed on you system. 
    echo After completion setup will continue to install MyApplication on your system. 
    echo. 
    Start /w .\NetFx20SP2_x86.exe 
) 
Start /w .\setup.exe 

1:由於您只使用CONFIG文件進行一次測試,因此使用變量無用。此外,「=」符號必須粘貼到變量名,否則您將創建一個帶有空格的變量。「set filename =」 and 「set filename =」是兩個不同的東西。是的,一個變量名可以包含多個單詞和空格,但需要非常謹慎,可能很難處理。

2:我不會推薦使用'::'作爲評論,對不起Camilo,因爲它在括號內不起作用。它會在這裏,但如果你將這個軌道用於所有批次,那麼稍後可能會遇到問題,並且如果不知道這一點,您會想知道爲什麼代碼被破壞。

3:你並不需要結束腳本退出,也不重置爲回聲上,當腳本到達結尾,它本身復位回送狀態並退出。

希望這會有所幫助。

相關問題