![](/img/trans.png)
[英]How can I change Windows shell (cmd.exe) environment variables from C++?
[英]How change PATH env in cmd.exe /c in Windows
我想运行这样的事情:
cmd /c "set ""Path=V:\;%Path%"" & ECHO. %Path% & PAUSE"
但是有一个问题:命令行窗口仅出现片刻,然后消失。 我创建了一个测试.bat(例如echo.1: %1
和2,3 ...)来检查其行为并...
0: "V:\test.bat"
1: /c
2: "set ""Path=V:\;
3:
(4-9 the same)
当我用例如5替换%时,第二个参数看起来像"set ""Path=V:\\;5Path5"" & ECHO. 5Path5 & PAUSE"
,但这不是我想要的。 我认为,在此shell命令中解析%Path%可能存在问题。
我尝试了aslo:
cmd /c "set ""Path=V:\;%%Path%%"" & ECHO. %%Path%% & PAUSE"
cmd /c "set ""Path=V:\;%%%Path%%%"" & ECHO. %%%Path%%% & PAUSE"
cmd /c "set ""Path=V:\;%%%%Path%%%%"" & ECHO. %%%%Path%%%% & PAUSE"
cmd /c "set ""Path=V:\;%%%%%Path%%%%%"" & ECHO. %%Path%%%%% & PAUSE"
cmd /c "set ""Path=V:\;%%%%%%%%Path%%%%%%%%"" & ECHO. %%%%%%%%Path%%%%%%%% & PAUSE"
cmd /c "set ""Path=V:\;^%Path^%"" &ECHO.^%Path^%&PAUSE"
cmd /c "set ""Path=V:\;^%%Path^%%"" &ECHO.^%Path^%&PAUSE"
cmd /c "set ""Path=V:\;\%Path\%"" &ECHO.\%Path\%&PAUSE"
我将在下次测试中编辑帖子...
编辑:我只是注意到,我什至不能简单地使用: cmd /c "echo %PATH% & PAUSE"
这似乎不起作用,因为在启动cmd之前先评估xx
cmd /c "set xx=yyyyyy & echo %xx% & PAUSE"
证明它有效,变量已正确设置:
cmd /c "set xx=yyyyyy & set xx & PAUSE"
输出:
xx=yyyyyy
其他逃避%
:
cmd /c "set xx=yyyyyy & ECHOxx.bat & PAUSE"
( ECHOxx.bat
是一个echo %xx%
的脚本)
输出
yyyyyy
对于路径,您会发现自己有点复杂,但也可以正常工作:
cmd /c "set PATH=%CD%\subdir;"%PATH%" & echoxx.bat"
它的工作原理: echoxx.bat
已被移到subdir
目录中,并且找到了。
我来解决。 我需要什么:
cmd /c "set ""Path=V:\;%Path:~0%"" &ECHO.%Path:~0%&PAUSE"
看起来Windows甚至用运行(Win + R),CMD(.exe),ShellExec(wscript / winapi)的这种环境变量内容(用分号表示的更多路径)替换了%PATH%
。 因此,不能将其用作快捷方式中的参数的一部分(我需要这样做)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.