2015-07-10 77 views
-5

我有一個運行vb.net控制檯應用程序的批處理文件。在VB.Net中從ConsoleApplication設置Shell變量

我需要改變一些var的例如從目前的命令行中其他批處理文件來使用它「VBRUN」,他們的控制檯應用程序

爲例運行後的test.bat

@echo off 
set vbrun=true 
myVBTool.exe 
echo %vbrun% 
+0

那麼你有什麼嘗試?顯示你的研究工作,否則你的問題將被低估。 –

回答

0

在Windows中,環境變量存儲稱爲存儲區域內環境塊。該內存不共享,每個進程都有自己的副本。當父進程啓動子進程時,父進程會自定義子進程的environemtn塊或向其提供其自己的環境塊的副本。

但是你需要反過來。您想要從子進程(myVBTool.exe)更改父進程的環境(cmd.exe)。

總之,不,這是做不到的。

但是,當然,一個過程可以改變自己的環境。在你的情況下,你需要一種方式讓你的工具向其父進程表明該變量需要改變。

您可以設置將存儲爲errorlevel爲應用程序的返回值,根據其設定的變量

rem .... 
myVBtool.exe 
if errorlevel 1 set "vbrun=false" 
rem .... 

或者您的應用程序可以寫入stdout和批處理文件可以處理這個輸出

for /f "delims=" %%a in ('myVBTool.exe') do set "vbrun=%%a"