nsi指令碼中執行 bat檔案要隱藏dos視窗問題

2021-09-07 06:32:40 字數 1055 閱讀 7649

問題原因:工作中,在乙個nsi的安裝指令碼檔案中需要安裝虛擬攝像頭驅動,安裝驅動指令碼是.bat檔案。使用nsi的execwait函式執行.bat檔案時會顯示dos視窗。但是領導要求不能顯示dos視窗。

解決方法一:思路是看看bat指令碼命令本身有沒有隱藏dos方法。但是沒有找到。後來發現可用用.vbs檔案呼叫來隱藏。

建立乙個.vbs檔案,寫入:createobject ("wscript.shell").run "a.bat",1,true。使用.vbs檔案來呼叫bat檔案。windows下執行時可以隱藏視窗的。但是發現在nsi指令碼無法執行.vbs檔案。

所有方法一失敗了。

方法二:檢視nsi本身帶有的exec執行函式。

網上檢視到有

1、execwait "$instdir\nsis.bat"                                           //可以等待          不可以隱藏視窗 

2、n***ec::exec "$instdir\nsis.bat"                                     //可以等待          可以隱藏視窗

3、execshell open "$instdir\nsis.bat" "" sw_hide             // 不可以等待     可以隱藏視窗

4、execcmd::exec "$instdir\nsis.bat"                                  // 不可以等待     可以隱藏視窗  ( pop $0、 execcmd::wait $0  等待)

我們需要等待bat檔案返回,而且要隱藏視窗,那麼可以用第二個 n***ec::exec函式。

n***ec::exec函式是個nsis的n***ec.dll外掛程式中的方法。所有需要在指令碼檔案中新增外掛程式。

新增方法是

!addplugindir plugins //新增nsis程式中附帶的外掛程式庫目錄

n***ec::exec '$'   //執行相關的.bat檔案 vcam_install是個.bat檔案的完整路徑變數。

好了,這樣就不會顯示dos視窗了。

Ant 使用Ant指令碼執行bat檔案

有如下檔案結構 root batdir my.bat ant build.xml ant build.xml檔案的內容 或 這樣,就可以執行my.bat檔案了。dir屬性指定了執行cmd.exe命令的目錄。output指定了輸出的日誌檔案。arg標籤的value和line都是給cmd.exe傳遞引數...

利用bat批量執行指令碼檔案

利用bat 的for命令讀取中的sql檔案 for r c in 0 sql do echo c c 相當於變數 in 中的為迴圈的範圍 此句的作用是顯示當前目錄下以0開頭的sql檔案 利用sql server 自帶的sqlcmd命令來操作 sqlcmd s 127.0.0.1 d product ...

C 中執行批處理檔案 bat 或其它程式或指令碼

system.diagnostics.process process new system.diagnostics.process process.startinfo.filename c abc.vbs process.start system.diagnostics.process proces...