快速交换windows shell环境变量

时间:2009-03-12 04:34:08

标签: windows batch-file environment-variables

不是Windows VBS编写器(但是Windows shell的用户)我使用多个不同版本的第三方代码,这些代码要求我设置windows shell环境变量,特别是这些是与Java相关的

查看以下question我开始考虑使用单个命令快速更改shell环境变量需要做些什么。例如:

在模式A中我有

ANT_HOME=c:\foo\bar\ant-1.5.1
JAVA_HOME=c:\foo\java\1.4
PATH=c:\foo\java\1.4\bin;c:\foo\bar\ant-1.5.1\bin

在模式B中开发其他东西,我希望快速切换到以下内容(同时剔除上述过程中的PATH设置)

ANT_HOME=c:\foo\bar\ant-1.6.1
JAVA_HOME=c:\foo\java\1.6
PATH=c:\foo\java\1.6\bin;c:\foo\bar\ant-1.6.1\bin

要在引用的问题中扩充脚本,我猜测使用Split命令进行一些路径处理等等是必要的。有没有人已经做过这样的事情,他们愿意分享?

我显然不能只杀死整个PATH,因为PATH中有许多其他项目我想保留使用它们。

2 个答案:

答案 0 :(得分:1)

在路径中使用ANT_HOME和JAVA_HOME变量:

PATH=%JAVA_HOME%\bin;%ANT_HOME%\bin

在路径中有一个批处理文件,用于在2个上下文之间进行交换

modea.bat:

set ANT_HOME=c:\foo\bar\ant-1.5.1
set JAVA_HOME=c:\foo\java\1.4

modeb.bat:

set ANT_HOME=c:\foo\bar\ant-1.6.1
set JAVA_HOME=c:\foo\java\1.6

答案 1 :(得分:1)

根据thaggie的回答,您可以将ANT_HOMEJAVA_HOME路径作为参数传递给您的脚本:

C:> MyScript c:\foo\java\1.4 c:\foo\bar\ant-1.5.1 

这样您就不需要为每个“模式”管理.bat脚本。

然后在您的脚本中使用路径中的参数:

:: Not needed, but makes it clearer which argument is the Ant path 
:: and which is the Java path.
set JAVA_HOME=%1
set ANT_HOME=%2

:: If you want to preserve the current path and just append the Ant and
:: Java paths:
set PATH=%path%;%JAVA_HOME%;%ANT_HOME%

:: If you want the path to just be the Ant and Java paths:
set PATH=%JAVA_HOME%;%ANT_HOME%