如何通过.bat脚本识别Windows用户桌面的实际存储分区(C/D盘)
解决迁移后获取Windows实际桌面路径的问题
当通过文件夹属性的「位置」选项卡迁移桌面等用户文件夹后,%USERPROFILE%\Desktop可能不再指向系统显示的主桌面,这时候可以通过读取Windows注册表或调用系统API的方式获取正确路径,这两种方法都能可靠识别迁移后的实际位置。
方法1:通过注册表查询获取路径(纯BAT脚本实现)
你可以在BAT脚本中使用reg query命令读取注册表中存储的实际桌面路径,具体代码如下:
@echo off setlocal enabledelayedexpansion :: 读取User Shell Folders中的Desktop路径(适配Windows Vista及以上系统) for /f "tokens=2*" %%a in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop') do ( set "DESKTOP_PATH=%%b" ) :: 解析路径中可能存在的环境变量占位符 call set "DESKTOP_PATH=!DESKTOP_PATH!" :: 复制目标lnk文件到实际桌面路径 copy "你的快捷方式源路径\目标文件.lnk" "!DESKTOP_PATH!" /y endlocal
代码说明:
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders下的Desktop键值,会准确记录用户通过「位置」选项卡修改后的桌面路径。call set用于展开路径中可能存在的环境变量占位符(比如迁移后的路径可能以%USERPROFILE%形式存储,这一步会将其转换为真实的磁盘路径)。/y参数用于自动覆盖已存在的同名文件,可根据需求移除。
方法2:借助PowerShell获取路径(更简洁)
如果你的环境允许调用PowerShell,可以用更简洁的方式直接获取系统识别的主桌面路径:
@echo off for /f "delims=" %%a in ('powershell -Command "[Environment]::GetFolderPath('Desktop')"') do ( set "DESKTOP_PATH=%%a" ) copy "你的快捷方式源路径\目标文件.lnk" "%DESKTOP_PATH%" /y
方法优势:
[Environment]::GetFolderPath('Desktop')会直接调用Windows系统API获取主桌面路径,不管用户是否迁移过文件夹,都能返回最准确的结果。
内容的提问来源于stack exchange,提问作者samueldelorenzi
相关产品推荐
相关产品推荐

