2012-06-09 193 views
-1

我正在使用以下命令爲c#Console應用程序中的環境變量設置一個值。c中的環境變量#

System.Environment.SetEnvironmentVariable(envvar, result,EnvironmentVariableTarget.Process); 

在命令窗口中運行應用程序後,當我嘗試回顯該變量時,我看不到該值。 我必須在批處理文件中使用這個應用程序。 我想要像SET命令一樣的功能。請幫助..

編輯: 我嘗試使用System.Environment.SetEnvironmentVariable(ENVVAR,結果,EnvironmentVariableTarget.user)和傳播我想這Propagating Change in Env VAr的變化。但我無法在同一個命令窗口中回顯變量。

讓我重新說明這個問題: 我想在c#中設置一個值爲Env Var。我必須能夠在相同的命令窗口中使用該變量(即我不應該打開一個新的cmd窗口來查看更改)。我們使用SET命令,我們可以立即使用該變量.. rt?我想要這樣的功能。 Plzz幫助

+2

環境變量是在當前過程可見。 – adatapost

+0

我嘗試使用EnvironmentVariableTarget.User。當前用戶正在創建新的env var,但新創建的變量對批處理文件不可見。如果我關閉並打開一個新的命令窗口,那麼我可以使用該變量。我看到了一些解決方案來傳播Env變量中的更改,但我不知道如何在我的編程中包含它們。我的程序名稱是test.exe。我將在批處理文件中以下列方式使用它。 「test var:= asdf」。預期的輸出是「var」應該被賦予「asdf」,並且我應該能夠通過在其餘的bacth文件中使用%var%來獲得該值。 – Sravan

回答

1

爲了在當前批處理過程中查看env。你必須在程序中輸出它作爲字符串並解析它並在批處理文件中調用set。

或者您可以嘗試EnvironmentVariableTarget.User。使用此選項設置時,env將在所有新進程中可見。

2

當您使用EnvironmentVariableTarget.Process變量集將只在當前進程可見,你可以在此示例中看到:

System.Environment.SetEnvironmentVariable("myVar", "myValue", EnvironmentVariableTarget.Process); 
string s = System.Environment.GetEnvironmentVariable("myVar",EnvironmentVariableTarget.Process); 

以上myVar的將顯示S =「myvalue的」不可見但在命令窗口。

如果你想設置在命令行窗口中可見的值,那麼你需要使用EnvironmentVariableTarget.User:

System.Environment.SetEnvironmentVariable("myVar", "myValue", EnvironmentVariableTarget.User); 

這樣的設置myVar的= myvalue的將被保存,然後你可以在命令行窗口看到。

的詳細示例位於用該方法創建here