为什么其他文件夹路径也添加到使用SetX的系统PATH而不仅是指定的文件夹路径?

为什么其他文件夹路径也添加到使用SetX的系统PATH而不仅是指定的文件夹路径?

我有一个批处理文件,我从C ++调用system("name.bat")。在该批处理文件中,我试图读取注册表项的值。从C ++调用批处理文件会导致set KEY_NAME=HKEY_LOCAL_MACHINE\stuff失败。

但是,当我直接运行批处理文件(双击它)时,它运行正常。不确定我做错了什么。

批处理文件:

set KEY_NAME=HKEY_LOCAL_MACHINE\SOFTWARE\Ansoft\Designer\2014.0\Desktopset VALUE_NAME=InstallationDirectoryREG QUERY %KEY_NAME% /v %VALUE_NAME%

C ++文件:

int main(void){
    system("CALL C:\\HFSS\\setup_vars.bat");
    return 0;}

更新1:

我发现密钥实际上是在64位注册表中,而我正在构建一个32位的C ++解决方案。一旦我修复了它,它发现注册表键很好。

现在我在将该路径添加到PATH变量时出现问题。它不是创建系统变量,而是创建用户变量PATH并将其添加到那里。

从命令行运行。

码:

set KEY_NAME=HKLM\SOFTWARE\Ansoft\Designer\2014.0\Desktop\set VALUE_NAME=InstallationDirectoryFOR /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 (
   @echo %KEY_NAME%\%VALUE_NAME% not found.):: Set PATH Variableset path_str=%PATH%set addPath=%ValueValue%;echo %addPath%echo %ValueValue%echo %PATH%| find /i "%addPath%">NULif NOT ERRORLEVEL 1 (
   SETX PATH "%PATH%) else (
   SETX PATH "%PATH%;%addPath%;" /M)

更新2:

我移动了选项/ M的位置,现在它正在添加到正确的PATH变量。

但是,当我这样做时,它不止一次添加PATH(3次),然后它还添加了一个到visual studio amd64文件夹的路径。

我很确定为什么会这样。


精慕HU
浏览 680回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP