使用批处理文件设置 Windows 环境变量

我正在寻找一种方法来设置一个.cmd 文件的环境路径变量。
当路径变量变得太长时,我得到了一些错误。
只需在下面的“设置路径变量”中添加所需的变量即可
检查路径变量的当前值并添加到脚本中
以管理员身份运行脚本!
打开一个新的控制台窗口,它应该可以工作,例如 php-v

260964 次浏览
@ECHO OFF


:: %HOMEDRIVE% = C:
:: %HOMEPATH% = \Users\Ruben
:: %system32% ??
:: No spaces in paths
:: Program Files > ProgramFiles
:: cls = clear screen
:: CMD reads the system environment variables when it starts. To re-read those variables you need to restart CMD
:: Use console 2 http://sourceforge.net/projects/console/




:: Assign all Path variables
SET PHP="%HOMEDRIVE%\wamp\bin\php\php5.4.16"
SET SYSTEM32=";%HOMEDRIVE%\Windows\System32"
SET ANT=";%HOMEDRIVE%%HOMEPATH%\Downloads\apache-ant-1.9.0-bin\apache-ant-1.9.0\bin"
SET GRADLE=";%HOMEDRIVE%\tools\gradle-1.6\bin;"
SET ADT=";%HOMEDRIVE%\tools\adt-bundle-windows-x86-20130219\eclipse\jre\bin"
SET ADTTOOLS=";%HOMEDRIVE%\tools\adt-bundle-windows-x86-20130219\sdk\tools"
SET ADTP=";%HOMEDRIVE%\tools\adt-bundle-windows-x86-20130219\sdk\platform-tools"
SET YII=";%HOMEDRIVE%\wamp\www\yii\framework"
SET NODEJS=";%HOMEDRIVE%\ProgramFiles\nodejs"
SET CURL=";%HOMEDRIVE%\tools\curl_734_0_ssl"
SET COMPOSER=";%HOMEDRIVE%\ProgramData\ComposerSetup\bin"
SET GIT=";%HOMEDRIVE%\Program Files\Git\cmd"


:: Set Path variable
setx PATH "%PHP%%SYSTEM32%%NODEJS%%COMPOSER%%YII%%GIT%" /m


:: Set Java variable
setx JAVA_HOME "%HOMEDRIVE%\ProgramFiles\Java\jdk1.7.0_21" /m


PAUSE

我是从 Linux 的角度来考虑这个问题的。通常在 Linux ($myVar=1)中设置一个环境变量只是为当前进程设置,而不是为它生成的任何子进程设置。

若要允许任何子进程读取变量,需要对 export envVar=2执行。在 Windows 中,set命令已经为您完成了这项工作。这就是你想要的。

setx命令为当前用户设置了一个变量 永久性的,但奇怪的是,这并没有反映在当前进程中,您需要打开另一个 cmd.exe窗口才能生效。

C:\> set foobar=1


C:\> powershell "echo ${env:foobar}"
1


C:\> setx barfoo 2


SUCCESS: Specified value was saved.


C:\> powershell "echo ${env:barfoo}"  # not present


C:\>

还要注意 setsetx之间严格必要的语法差异。