用于编辑用户路径的批处理文件

用于编辑用户路径的批处理文件

我从论坛上的另一篇文章中获得了批处理文件,它可以编辑用户的路径,但如果路径中包含 Windows 7 计算机上常见的任何 Program Files (x86) 条目,它就会崩溃。有没有什么办法可以修复脚本,使其与这些条目兼容?

@echo OFF

set KEY_NAME="HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
set VALUE_NAME=Path

FOR /F "usebackq skip=4 tokens=1-3" %%A IN (`REG QUERY %KEY_NAME% /v %VALUE_NAME% 2^>nul`) DO (
  set ValueName=%%A
  set ValueValue=%%C
)

if defined ValueName (

  set newPath=%ValueValue%;C:\bin

  reg.exe ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_EXPAND_SZ /d %newPath% /f

  set path=%path%;C:\bin

) else (
    @echo %KEY_NAME%\%VALUE_NAME% not found.
)

答案1

脚本失败是因为)inProgram Files (x86)过早关闭了 IF 语句中的代码块。

这是一个快速而粗糙的修复方法,可以帮你解决这个问题,尽管代码仍然不是很强大。

@echo OFF
set KEY_NAME="HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
set VALUE_NAME=Path
FOR /F "usebackq skip=4 tokens=1-3" %%A IN (`REG QUERY %KEY_NAME% /v %VALUE_NAME% 2^>nul`) DO (
  set ValueName=%%A
  set ValueValue=%%C
)
if not defined ValueName (
  @echo %KEY_NAME%\%VALUE_NAME% not found.
  exit /b
)
set newPath=%ValueValue%;C:\bin
reg.exe ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_EXPAND_SZ /d %newPath% /f
set path=%path%;C:\bin

相关内容