在写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