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

Rub*_*ben 54 windows environment cmd path batch-file

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

Rub*_*ben 76

@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
Run Code Online (Sandbox Code Playgroud)

  • 看起来很棒!我遍布Windows变量和Emacs变量的路径集合需要一些清理,我会试试这个.非常有教育意义,谢谢! (4认同)
  • 谢谢,别忘了看看这个:http://www.rapidee.com/en/about (2认同)
  • @rchrd SET 在控制台中启动一个变量,setx 实际上是在 Windows 环境变量中设置变量。您可以只在 setx PATH 中设置字符串,但这会使其不可读,并且字符串可能会变得很长,您会收到错误。 (2认同)

xjc*_*jcl 6

我从 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:\> 
Run Code Online (Sandbox Code Playgroud)

set另请注意和之间严格必要的语法差异setx