|
dir命令无法直接解析这些环境变量如%SystemRoot%和%USERPROFILE%)
修正后的脚本:
- @echo off
- :: 获取Windows系统的临时文件夹
- set SystemPath_TEMP_System=
- for /f "tokens=2,*" %%i in ('%WINDIR%\System32\reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v "TEMP"') do (
- set SystemPath_TEMP_System=%%j
- )
- :: 扩展环境变量
- call :ExpandEnv SystemPath_TEMP_System
- @echo Windows系统临时文件夹TEMP位置在:%SystemPath_TEMP_System%
- if exist "%SystemPath_TEMP_System%" (
- dir "%SystemPath_TEMP_System%"
- ) else (
- echo 目录不存在: %SystemPath_TEMP_System%
- )
- :: 获取Windows系统中用户的临时文件夹
- set SystemPath_TEMP_User=
- for /f "tokens=2,*" %%i in ('%WINDIR%\System32\reg query "HKEY_CURRENT_USER\Environment" /v "TEMP"') do (
- set SystemPath_TEMP_User=%%j
- )
- :: 扩展环境变量
- call :ExpandEnv SystemPath_TEMP_User
- @echo Windows系统用户临时文件夹TEMP位置在:%SystemPath_TEMP_User%
- if exist "%SystemPath_TEMP_User%" (
- dir "%SystemPath_TEMP_User%"
- ) else (
- echo 目录不存在: %SystemPath_TEMP_User%
- )
- goto :eof
- :ExpandEnv
- setlocal EnableDelayedExpansion
- set var=%1
- set value=!%var%!
- :: 多次调用以确保嵌套变量被完全扩展
- :expandloop
- set expanded=!value!
- for /f "delims=" %%a in ('echo !expanded!') do set expanded=%%a
- if not "!expanded!"=="!value!" (
- set value=!expanded!
- goto expandloop
- )
- endlocal & set %1=%expanded%
- goto :eof
复制代码
如果仍然遇到问题,您也可以考虑使用以下更简单的方法直接获取临时目录:
- @echo off
- :: 直接使用系统环境变量
- echo 系统临时文件夹: %TEMP%
- if exist "%TEMP%" dir "%TEMP%"
- echo 用户临时文件夹: %TMP%
- if exist "%TMP%" dir "%TMP%"
复制代码 |
|