批处理文件中用户桌面的路径

Jac*_*111 10 batch-file windows-7

我正在做一个简单的批处理文件,将位于批处理文件相同路径下的文件夹和文件复制到桌面.我可以轻松地获取批处理文件所在的路径

%~dp0
Run Code Online (Sandbox Code Playgroud)

但我想知道如何获得用户桌面的路径(我使用的是Widows 7 Ultimate)

有什么建议?

Mal*_*ali 67

我想你是在windows环境下,所以%USERPROFILE%\Desktop应该没问题


fox*_*ive 17

这是当前用户桌面的位置:

%userprofile%\desktop
Run Code Online (Sandbox Code Playgroud)

  • 如果桌面已重新映射到其他位置,则不起作用。 (2认同)

小智 15

如果桌面位置在另一个文件夹中,那么这将是正确答案:

批号字符串:

for /f "usebackq tokens=3*" %%D IN (`reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop`) do set DESKTOP=%%D
Run Code Online (Sandbox Code Playgroud)

V2(与空间一起工作)4.10.2016:

for /f "usebackq tokens=1,2,*" %%B IN (`reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop`) do set DESKTOP=%%D
Run Code Online (Sandbox Code Playgroud)

如果您有非ASCII符号,还需要将ANSI编码转换为OEM,例如西里尔文:

CHCP 1251 >Nul
for /f "usebackq tokens=1,2,*" %%B IN (`reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop`) do set DESKTOP=%%D
CHCP 866 >Nul
for /f "delims=" %%i IN ('echo %DESKTOP%') do set DESKTOP=%%i
Run Code Online (Sandbox Code Playgroud)

然后使用:

echo %DESKTOP%
Run Code Online (Sandbox Code Playgroud)


小智 3

我觉得这个也应该没问题

%systemdrive%\Documents and Settings\All Users\Desktop
Run Code Online (Sandbox Code Playgroud)

问候

  • @Jack_111 - 这适用于 XP,但不适用于 Win 7。您确实应该接受 Mali 答案,因为它更通用。你的解决方案也不错,但不是每个人都可以访问注册表(我在我的工作场所没有) (2认同)