2012-11-09 26 views
3

我正在嘗試編寫一個Windows批處理文件,爲我公司的內部用戶啓動安裝程序。有一個鏈接到我們的內部網上的批處理文件。如果你點擊鏈接(至少在我必須支持的IE9上),它會詢問你是否要運行或保存文件。大多數用戶單擊「運行」,批處理文件將作爲IE的子進程執行,並繼承其環境變量。這是我的問題出現的地方。在Windows上從瀏覽器運行批處理文件,但不繼承瀏覽器的環境變量

如果瀏覽器已經開了一段時間,它可能是一個(用戶或系統級)環境變量已經在用戶的PC 上設置瀏覽器之後推出,所以該批處理文件並沒有看到變量,我需要它。

我想找到一種方法來確保批處理文件始終在全新的環境下運行。

這工作

rem bootstrap batch file 
explorer the_real_batch_file.bat 

因爲Explorer.exe是警惕的用戶和系統環境變量的變化,但這並不

rem bootstrap batch file 
explorer the_real_batch_file.bat some_param 

some_param混淆Windows資源管理器(它只是推出一個新的Windows Explorer窗口)。我需要能夠將參數傳遞給'真正'的批處理文件,所以這是一個顯示停止。

任何人都可以看到解決這個問題的方法嗎?

+0

'啓動瀏覽器the_real_batch_file'而不是,所以它成爲一個新的單獨的過程?系統變量應該始終顯示在一個新的進程中,即使這個新進程是在這些新的變量設置之前從某個進程啓動的。 –

+0

系統環境變量不能像那樣工作。我剛剛從命令行程序中嘗試了它:執行一個批處理文件,它迴應一些不存在的變量,如'%WIBBLE%'。沒有什麼迴音。然後添加一個名爲'WIBBLE'的sys env var並將其設置爲'some text',然後從相同的命令shell再次運行該批處理文件 - 仍然沒有回顯。 – Ben

+0

當你設置一個env var時,explorer並沒有得到重啓,所以我沒有看到如果在這種情況下沒有完全重新啓動,windows中的任何新進程如何得到一個新的env var。 –

回答

2

我最終簡化了我的問題。我現在可以運行start explorer my_batch_file(沒有參數到批處理文件),因爲我在%TEMP%中生成了一個包含我需要的參數的定製中間批處理文件。

所以我這樣做:

start explorer %TEMP%\temp_batch_file.bat 

而且裏面temp_batch_file.bat我有

call my_original_batch_file.bat some_argument 

這似乎很好地工作。

1

我很抱歉,我是新來的,並不能找出我的生活增添了上述問題的評論...

無論哪種方式,Explorer.exe的不處理的執行批處理文件,cmd/c。

嘗試做

cmd /c "batchfile.bat argument" 

另一種方法是找出哪些enviornmental變量被稱爲在你的軟件,並呼籲他們在批處理,以確保它們是正確的,如果沒有失敗。 IE

IF "%ENVIORMENTALVARIABLE%" NEQ "WhatitShouldBe" (goto :fail) else goto continue 
:fail 
echo this failed <insert exitcode here> 
:continue 
+0

好的,所以我可以在我的答案下看到添加評論,但不是在您的問題下。 – bill

+0

'CMD/C「batchfile.bat說法」'不工作 - 它仍然運行在子命令外殼的批處理文件,因爲它只是一個子進程它繼承父環境。 – Ben

+0

關於評論問題,那是因爲你還沒有足夠的聲譽。 :) – Ben

相關問題