批次檔編輯使用者路徑

批次檔編輯使用者路徑

我有一個從本論壇的另一篇文章中獲得的批次文件,該文件編輯用戶的路徑,但如果該路徑包含 Windows 7 電腦上常見的任何程式文件 (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

相關內容