我有一个批处理脚本,需要桌面文件夹的完整路径。
现在我正在使用%USERPROFILE%/Desktop
,它工作正常,直到我了解到路径可以改变(见您能更改 Windows 中桌面文件夹的位置吗?)。
我尝试读取 regedit 并最终得到如下结果(我已经安装了 cygwin):
REG QUERY "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\Current
Version\Explorer\Shell Folders" /v Desktop |grep Desktop| awk '{$1=$2=""; print $0}'
这个功能运行良好,但我并不喜欢它的健壮性和简单性。更不用说如果我没有awk
可用的功能,它会变得更加混乱。
我注意到,您可以输入shell:Desktop
文件资源管理器,它会为您打开桌面文件夹。但是我不知道如何在批处理文件中使用它。
是否存在隐藏的环境变量或简单命令可以用来检索该值?
答案1
大多数特殊文件夹没有环境变量。官方方法是调用SHGetKnownFolderPath()来自 Win32 API 或系统.环境.获取文件夹路径()来自 .NET – 后者很容易无障碍通过 PowerShell:
$dir = [Environment]::GetFolderPath("Desktop")
批处理脚本 (Cmd.exe) 无法使用此类功能;您必须调用具有此类功能的程序(例如 PowerShell 或第三方工具,如nircmd)。