我发现设置PATH环境变量只影响旧的命令提示符.PowerShell似乎有不同的环境设置.如何更改PowerShell(v1)的环境变量?
注意:
我希望永久更改我的更改,因此每次运行PowerShell时都不必设置它.PowerShell有配置文件吗?像Unix上的Bash配置文件?
我试图在Windows中添加C:\xampp\php到我的系统PATH环境变量.
我已经使用Environment Variables对话框添加了它.
但是当我输入我的控制台时:
C:\>path
Run Code Online (Sandbox Code Playgroud)
它不显示新C:\xampp\php目录:
PATH=D:\Program Files\Autodesk\Maya2008\bin;C:\Ruby192\bin;C:\WINDOWS\system32;C:\WINDOWS;
C:\WINDOWS\System32\Wbem;C:\PROGRA~1\DISKEE~2\DISKEE~1\;c:\Program Files\Microsoft SQL
Server\90\Tools\binn\;C:\Program Files\QuickTime\QTSystem\;D:\Program Files\TortoiseSVN\bin
;D:\Program Files\Bazaar;C:\Program Files\Android\android-sdk\tools;D:\Program Files\
Microsoft Visual Studio\Common\Tools\WinNT;D:\Program Files\Microsoft Visual Studio\Common
\MSDev98\Bin;D:\Program Files\Microsoft Visual Studio\Common\Tools;D:\Program Files\
Microsoft Visual Studio\VC98\bin
Run Code Online (Sandbox Code Playgroud)
我有两个问题:
PATH使用控制台(以编程方式,使用批处理文件)向我的变量添加目录?我们可以使用这里setx讨论的.
setx PATH "%PATH%;C:\Something\bin"
Run Code Online (Sandbox Code Playgroud)
但是这个命令只能更改为用户PATH变量而不是系统变量.
我们如何制定类似的系统范围命令?

我开发了一个python脚本,我有一个设置窗口,可以选择安装软件的路径.当点击设置窗口的OK按钮时,我想将所有选定的路径写入注册表并阅读设置窗口再次打开时相同.我的代码如下所示.
def OnOk(self, event):
data1=self.field1.GetValue() #path selected in setting window
aReg = ConnectRegistry(None,HKEY_LOCAL_MACHINE)
keyVal=OpenKey(aReg,r"SOFTWARE\my path to\Registry", 0,KEY_WRITE)
try:
SetValueEx(keyVal,"Log file",0,REG_SZ,data1)
except EnvironmentError:
pass
CloseKey(keyVal)
CloseKey(aReg)
Run Code Online (Sandbox Code Playgroud)
我收到如下错误:
Traceback (most recent call last):
File "D:\PROJECT\project.py", line 305, in OnOk
keyVal=OpenKey(aReg,r"SOFTWARE\my path to\Registry", 0,KEY_WRITE)
WindowsError: [Error 5] Access is denied
Run Code Online (Sandbox Code Playgroud)
从注册表中读取,保存的注册表必须显示在设置窗口中.我尝试使用下面的代码.虽然它的工作但不满意我的编程方式.帮我解决更好的解决方案
key = OpenKey(HKEY_CURRENT_USER, r'Software\my path to\Registry', 0, KEY_READ)
for i in range(4):
try:
n,v,t = EnumValue(key,i)
if i==0:
self.field2.SetValue(v)
elif i==1:
self.field3.SetValue(v)
elif i==2:
self.field4.SetValue(v)
elif i==3:
self.field1.SetValue(v)
except EnvironmentError:
pass
CloseKey(key)
Run Code Online (Sandbox Code Playgroud) 我遇到了一个简单的Rcpp设置问题,我无法让它工作.我试着按照这个例子http://www.r-bloggers.com/user2013-the-rcpp-tutorial/ 但是在执行这段代码时:
library(Rcpp)
evalCpp("1 + 1", showOutput= TRUE)
Run Code Online (Sandbox Code Playgroud)
我得到了这个输出
C:/R/R-30~1.1/bin/x64/R CMD SHLIB -o "sourceCpp_33280.dll" "file8d01b0a675b.cpp"
Error in sourceCpp(code = code, env = env, rebuild = rebuild, showOutput = showOutput, :
Error 1 occurred building shared library.
WARNING: Rtools is required to build R packages but is not currently installed.
Please download and install the appropriate version of Rtools before proceeding:
Run Code Online (Sandbox Code Playgroud)
为了使它工作,我做了以下事情:
大多数类似的问题似乎表明文件路径中有一个空格,因此我几乎可以移动所有内容.但仍无法找到Rtools.我在我的笔记本电脑和桌面上试了一下它们都没有用,所以可能有一些结构我做错了.
使用静默安装程序(.msi)在Windows上安装python 2.7时,是否有一个命令行选项将Python添加到路径环境变量,如GUI选项?
Python 3.5安装程序默认包含一个选项PrependPath = 0,但Python 2.7可以使用它吗?
https://docs.python.org/3/using/windows.html
看起来这里讨论过这个问题,但是没有Python 2.7的解决方案?
https://bugs.python.org/issue3561
编辑
这批命令摇滚!
setx\M PATH"%PATH%; C:\ Python\Python27; C:\ Python\Python27\Scripts"
但是setx会将存储的%PATH%字符串截断为1024字节.

好吧,我可以通过指定slimer.bat文件的路径来启动slimerjs:C:\ bin\slimerjs\slimerjs.bat然后执行我的文件.
但是如果我修改casperjs文件(在bin \中)并修改slimer的默认exec:
'env_varname': 'SLIMERJS_EXECUTABLE',
'default_exec' : 'C:\bin\slimerjs\slimerjs.bat'
Run Code Online (Sandbox Code Playgroud)
当我执行casper命令时:
casperjs --engine=slimerjs test.js
Run Code Online (Sandbox Code Playgroud)
它不起作用,slimerjs.bat的路径似乎被忽略了.
我也试过了:https://github.com/laurentj/slimerjs/blob/master/BUILD.md
但单独的slimerjs.exe是不够的,我需要在我正在执行我的测试的当前文件夹中有application.ini和omni.ja,我不想在每个文件夹中添加一些文件.
我想要的只是在casperjs中使用引擎属性执行slimerjs,无论我在哪个文件夹,就像在phantomjs中所以我需要设置一个绝对路径(或从root的相对路径).
我不想在slimerjs.bat文件夹中指定我想要执行的文件夹或js测试:casperjs test C:/bin/try/test.js --engine = slimerjs.
这里有一个类似的问题:https: //github.com/n1k0/casperjs/issues/591
编辑(感谢Darren Cook的回答)了解更多详情:
set PATH=%PATH%;C:\\bin\\slimerjs
Run Code Online (Sandbox Code Playgroud)
如果我为slimer设置Windows PATH,当我执行casperjs test --engine = slimerjs test.js时,我有这样的消息:

但是在test.js文件夹中添加这两个文件可以解决问题.

所以我想我必须修改slimerjs bat文件,从slimerjs.bat文件夹设置:callexec路径,而不是当前的test.js文件夹.
这里 :
:callexec
if ["%HIDE_ERRORS%"]==[""] (
%SLIMERJSLAUNCHER% -app "%SLIMERDIR%application.ini" %PROFILE% -attach-console -no-remote %__SLIMER_ARGS%
) ELSE (
%SLIMERJSLAUNCHER% -app "%SLIMERDIR%application.ini" %PROFILE% -attach-console -no-remote %__SLIMER_ARGS% 2>NUL
)
Run Code Online (Sandbox Code Playgroud)
用:
SET SLIMERDIR=%~dp0
Run Code Online (Sandbox Code Playgroud)
问题是我不熟悉这种语法(批处理文件),它可能已经是正确的,问题不是来自这里.
但我观察到它似乎从当前文件夹中寻找application.ini和omni.ja,而不是slimerjs文件夹.
PS:第二个想法不起作用,但现在我知道它来自slimerjs.
编辑:
REM % ~ d[rive] …Run Code Online (Sandbox Code Playgroud) windows ×4
path ×2
casperjs ×1
cmd ×1
command-line ×1
exe ×1
installer ×1
msiexec ×1
powershell ×1
python ×1
python-2.7 ×1
r ×1
rcpp ×1
slimerjs ×1
winreg ×1