2015-06-09 80 views
0

我在發佈此問題之前搜索了答案,但找不到任何內容。使用批處理腳本在當前cmd中設置環境

問題是,我有一個CMD外殼,從中啓動不同的應用程序。我想要的是執行一個可以修改當前cmd環境的bat文件。

在我們當前的設置中,我們使用調用來啓動批處理文件,但該環境在調用方cmd環境中不會更新。是否有在當前cmd shell中運行批處理的命令?

+0

通常這是一個從一個命令提示執行的批處理文件中的cmd.exe的當前實例中運行,具有或不具有'call'。是用「開始」嗎?是否使用了管道?其中任何一個都可以使批處理在cmd.exe的新實例中執行。 – eryksun

+0

在批處理腳本中使用了'setlocal'語句嗎? – JosefZ

+0

不啓動或不使用Pipe或setLocal。該批處理文件具有簡單的set和setx。當從命令提示符執行批處理文件時,它將打開一個新實例並運行bat。所以env變化不會在主cmd上設置。 – skar

回答

0

「批處理文件有簡單的設置和setx,當從命令提示符執行批處理文件時,它會打開一個新的實例並運行bat,所以env變化不會在主cmd上設置。

setsetx都不會在運行批處理文件的命令提示符中生效。

  • set僅適用於當前的命令提示(這是屬於批處理文件運行批處理文件中的一個的命令提示)。批處理文件終止時,這些更改會丟失。

  • setx隻影響命令提示(而不是那些已經打開一樣,是用來運行該批處理文件中的一個,你將只能看到thse變化,如果你開始一個全新命令提示符。

你需要做的是有一個使用set啓動您的應用程序批處理文件。

在調用每個應用程序之前,您可以從How to Use a Batch File to Create a Command Prompt Menu to Execute Commands之類的東西開始,並添加相應的set命令。

ECHO OFF 
CLS 
:MENU 
ECHO. 
ECHO ............................................... 
ECHO PRESS 1, 2 OR 3 to select your task, or 4 to EXIT. 
ECHO ............................................... 
ECHO. 
ECHO 1 - Open Notepad 
ECHO 2 - Open Calculator 
ECHO 3 - Open Notepad AND Calculator 
ECHO 4 - EXIT 
ECHO. 
SET /P M=Type 1, 2, 3, or 4 then press ENTER: 
IF %M%==1 GOTO NOTE 
IF %M%==2 GOTO CALC 
IF %M%==3 GOTO BOTH 
IF %M%==4 GOTO EOF 
:NOTE 
cd %windir%\system32\notepad.exe 
start notepad.exe 
GOTO MENU 
:CALC 
cd %windir%\system32\calc.exe 
start calc.exe 
GOTO MENU 
:BOTH 
cd %windir%\system32\notepad.exe 
start notepad.exe 
cd %windir%\system32\calc.exe 
start calc.exe 
GOTO MENU 

來源Display, set, or remove CMD environment variables

永久性變化

更改使用SET命令不是永久性的製作,它們適用於 當前CMD僅提示,只保留到CMD窗口是關閉的 。要在命令行中永久更改變量,請使用SetX 或使用GUI - 控制面板|系統|環境|系統/用戶 變量

使用SetX永久更改變量不會影響任何已打開的CMD 提示。只有新的CMD提示纔會獲得新的 設置。

相關問題