You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 05:22:06