
批處理for命令無法直接使用系統變量%USERPROFILE%和%ALLUSERSPROFILE%最后由 bluesnan 于 -3-4 16:10最近發現在for命令下無法直接使用系統變量的問題,比如我想從注冊表獲取系統桌面的路徑,然后刪除某個特定的文件:
- @echo off
- FOR /F skip=4 delims= tokens=2* %%a in ('REG QUERY HKLMSOFTWAREMicrosoftWindowsCurrentVersionExplorerUser Shell Folders /v Common Desktop') do
- (
- echo %%b
- DEL /F /Q %%b文件名.txt
- )
- pause
nclick="copycode($('code0'));">復制代碼
如果以上Common Desktop的值是“%ALLUSERSPROFILE%桌面”,那么Del命令就會無法執行;如果Common Desktop的值是絕對的“C:docu
ments and SettingsAll Users桌面”,那么Del命令就能成功執行。我目前采用的變通方法是調用一個中間的bat文件來實現:
- FOR /F skip=4 delims= tokens=2* %%a in ('REG QUERY HKLMSOFTWAREMicrosoftWindowsCurrentVersionExplorerShell Folders /v Common Desktop') do (
- ECHO DEL /F /Q %%b文件名.txt>C:Movelink.bat
- CALL C:Movelink.bat
- )
nclick="copycode($('code1'));">復制代碼
========================上面僅僅是舉一個例子,我實際的命令要比這復雜的多。采用中間調用bat的方法雖然能解決問題,但是修改代碼比較費眼神。所以,有沒有更好的解決辦法?我需要使用的系統路徑有桌面、開始菜單、我的文檔、收藏夾等等,從注冊表中獲取路徑,如果包含%USERPROFILE%和%ALLUSERSPROFILE%就很麻煩的。