是否有批处理命令来搜索和替换环境变量PATH中的字符串?
例如,环境变量PATH的内容是:
C:\windows\system32;C:\windows;C:\windows\System32\Wbem;C:\windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\AccuRev\bin;C:\Python24
Run Code Online (Sandbox Code Playgroud)
我必须C:\Python24在这个变量中搜索并需要替换它C:\Python27.
我正在尝试将当前目录(从命令行)永久添加到 Windows 路径,但是我在实现这个时遇到了严重的问题。
我最初的尝试是:
set PATH=%PATH%;%cd%
Run Code Online (Sandbox Code Playgroud)
但是,这只适用于当前会话;只要我关闭命令行窗口,PATH环境变量就会保留其先前的值。
接下来,我尝试:
setx PATH=%PATH%;%cd%
Run Code Online (Sandbox Code Playgroud)
根据我在此处找到的一些答案,这可能适用于 Windows 7 和 8,但在 Windows 10 中,该setx命令具有三种工作方式:
Syntax 1:
SETX [/S system [/U [domain\]user [/P [password]]]] var value [/M]
Syntax 2:
SETX [/S system [/U [domain\]user [/P [password]]]] var /K regpath [/M]
Syntax 3:
SETX [/S system [/U [domain\]user [/P [password]]]]
/F file {var {/A x,y | /R x,y string}[/M] | /X} [/D delimiters]
Run Code Online (Sandbox Code Playgroud)
长话短说,我无法让它工作:
ERROR: Invalid syntax. Default option is not allowed more than …Run Code Online (Sandbox Code Playgroud) 我有一个批处理文件,我使用system("name.bat"). 在该批处理文件中,我试图读取注册表项的值。从 C++ 调用批处理文件会导致set KEY_NAME=HKEY_LOCAL_MACHINE\stuff失败。
但是,当我直接运行批处理文件(双击它)时,它运行良好。不知道我做错了什么。
批处理文件:
set KEY_NAME=HKEY_LOCAL_MACHINE\SOFTWARE\Ansoft\Designer\2014.0\Desktop
set VALUE_NAME=InstallationDirectory
REG QUERY %KEY_NAME% /v %VALUE_NAME%
Run Code Online (Sandbox Code Playgroud)
C++文件:
int main(void)
{
system("CALL C:\\HFSS\\setup_vars.bat");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
更新1:
我发现密钥实际上在 64 位注册表中,并且我正在将 C++ 解决方案构建为 32 位。一旦我解决了这个问题,它就会发现注册表项很好。
现在我在将该路径添加到我的PATH变量时遇到了问题。它不是创建系统变量,而是创建用户变量PATH并将其添加到那里。
从命令行运行有效。
代码:
set KEY_NAME=HKLM\SOFTWARE\Ansoft\Designer\2014.0\Desktop\
set VALUE_NAME=InstallationDirectory
FOR /F "usebackq skip=1 tokens=1,2*" %%A IN (`REG QUERY %KEY_NAME% /v %VALUE_NAME%`) DO (
set ValueName=%%A
set ValueType=%%B
set ValueValue=%%C
)
if defined ValueName (
@echo Value Value = %ValueValue%
) else …Run Code Online (Sandbox Code Playgroud)