2013-03-13 89 views
3

如何在批處理腳本中聲明全局變量?命令提示符中的全局變量

例子:

Test1.bat:

set testvar=C:\Windows 
echo %testvar% 

現在我應該能夠使用這個的testvar在其他批處理腳本(test2.bat)

Test2.bat :

echo %testvar% 

感謝和問候!

+0

[從設置系統環境變量的可能的複製Windows批處理文件?](http://stackoverflow.com/q/3803581/1380680) – 2013-03-13 02:30:42

+0

你寫的東西看起來是正確的,假設這兩個批處理文件都是在同一個命令會話中運行的。它不適合你嗎? – 2013-03-13 02:31:49

+0

它不適用於新的命令窗口。首先它可以工作C:\ Program Files> echo%testvar% c:\ Windows新的cmd窗口,它沒有。它只顯示C:\ Documents and Settings \ Z2021679> echo%testvar% %testvar% – user2150777 2013-03-13 02:41:40

回答

1

通過永久設置系統環境變量。見here

應用到:Windows Server 2008,Windows Vista中

對於Windows XP下載並安裝Windows XP Service Pack 2 Support Tools

+0

我沒有我的辦公室電腦上的SETX,我們不能安裝任何..我發現WINSET,我不能使用以及.. http://www.dankalia.com/tutor/01002/0100201008.htm – user2150777 2013-03-13 02:35:19

+0

我們使用Windows XP – user2150777 2013-03-13 02:59:13

+0

@ user2150777 SETX附帶XP Service Pack 2支持工具。 – 2013-03-13 03:24:40

1

據我知道使用多個批處理腳本一個變量的唯一方法是創建自定義系統環境變量。 你可以在這裏找到詳細的演練:global environment variables

0

如果2個批處理文件運行在同一個命令過程中,它將工作得很好。

這是test1.bat

set testvar="test123" 
echo In test1.bat 
echo %testvar% 

這是test2.bat

echo In test2.bat 
echo %testvar% 

這是從運行test1.bat輸出,然後test2.bat

C:\temp>test1.bat 

C:\temp>set testvar="test123" 

C:\temp>echo In test1.bat 
In test1.bat 

C:\temp>echo "test123" 
"test123" 

C:\temp>test2.bat 

C:\temp>echo In test2.bat 
In test2.bat 

C:\temp>echo "test123" 
"test123" 

這也如果您從另一個批次調用一個批次(因爲它是相同的過程),則工作

變化test1.bat是

set testvar="test123" 
echo In test1.bat 
echo %testvar% 
call test2.bat 

現在看起來就像這樣

C:\temp>test1.bat 

C:\temp>set testvar="test123" 

C:\temp>echo In test1.bat 
In test1.bat 

C:\temp>echo "test123" 
"test123" 

C:\temp>call test2.bat 

C:\temp>echo In test2.bat 
In test2.bat 

C:\temp>echo "test123" 
"test123" 

如果你希望它是提供給不同的命令過程,你需要看看SETX或設置系統變量。

+0

這只是迴應,而不是從test1.bat – user2150777 2013-03-13 02:44:24

+0

調用正確 - 我曾表明,即使分開調用它們,但在同一過程中它確實有效。 – Tad 2013-03-13 03:06:19

+0

是的,它可以在我們調用test2.bat時使用!萬分感謝 ! – user2150777 2013-03-13 07:53:32

1

SETX /? 

從提示 - 並觀察變化aplies到CMD.EXE的未來實例僅臨界點 - 不存在