在寫DOS批處理腳本操作註冊表的時候,經常會遇到一些特殊路徑,這些路徑中帶有環境變量(如:%USERPROFILE%),必須將環境變量擴展出來,才能得到真實的路徑。今天就遇到過這樣的問題,Google、百度無果,只好自己動手,終於找到解決方法,貼出來分享一下:
@echo off
set KEY="HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"
for /F "tokens=2* delims= " %%A in ('reg query %KEY% /v Startup') do set STARTUP_PATH=%%B
echo %STARTUP_PATH%
call set STARTUP_PATH=%STARTUP_PATH%
echo %STARTUP_PATH%
pause
使用call就可以將環境變量擴展出來,如果去掉直接用set STARTUP_PATH=%STARTUP_PATH%,其中的環境變量就擴展不出來。
所以上面的腳本可以寫成:
@echo off
set KEY="HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"
for /F "tokens=2* delims= " %%A in ('reg query %KEY% /v Startup') do call set STARTUP_PATH=%%B
echo %STARTUP_PATH%
pause