Windows批处理中是否有桌面文件夹的快捷方式?

时间:2010-04-07 09:35:08

标签: batch-file

C:\Documents and Settings\Administrator\Desktop

我不想每次都输入上面的内容来引用桌面上的文件

4 个答案:

答案 0 :(得分:8)

您可以使用"%USERPROFILE%\Desktop",但我不知道它是从哪个版本的Windows构建的。

如果您想要桌面所在的真实文件夹,请在bach中使用此代码

  

for / F“skip = 2 tokens = 3 * delims =”%% a   in('reg query   “HKEY_CURRENT_USER \软件\微软\的Windows \ CurrentVersion \ Explorer中\用户   Shell文件夹“/ v桌面”)设置   DesktopFolder = “%%一个”

这需要reg.exe可用(再次,我不知道它在哪个版本的Window),它会将DesktopFolder变量设置为桌面的路径。

答案 1 :(得分:6)

Anders的混合体可以更加简单和可读,使用Tom Lavedas所述的方法hybrid scripting

@if (@X)==(@Y) @goto :Dummy @end/* Batch part

@echo off
SETLOCAL ENABLEEXTENSIONS
for /f "delims=" %%x in ('cscript //E:JScript //nologo "%~f0"') do set desk=%%x
echo desktop path is %desk%
goto :EOF

***** Now JScript begins *****/
WScript.Echo(WScript.CreateObject("Shell.Application").Namespace(16).Self.Path);

答案 2 :(得分:1)

如果你绝对需要一个批处理文件,但想要使用windows脚本主机的强大功能,你可能想尝试WSH/batch hybrid

Batch / WSH hybrid:

@if (1==1) @if(1==0) @ELSE
@echo off&SETLOCAL ENABLEEXTENSIONS
for /f "delims=" %%x in ('cscript //E:JScript //nologo "%~f0"') do set desk=%%x
echo desktop path is %desk%
@goto :EOF
@end @ELSE
WScript.Echo(WScript.CreateObject("Shell.Application").Namespace(16).Self.Path);
@end

如果您需要获取其他一些shell文件夹的路径,请参阅ShellSpecialFolderConstants

答案 3 :(得分:1)

set UserDesktop=%UserProfile%\Desktop

if exist %Public% (
    set SharedDesktop=%Public%\Desktop
) else (
    set SharedDesktop=%AllUsersProfile%\Desktop
)

所以现在你可以使用局部变量

%UserDesktop%%SharedDesktop%

SharedDesktop第一种情况适用于Vista,而上面则适用于XP

ps:在使用这些变量之前,你应该引用“%UserDesktop%”,因为用户名必须有空格,比如... \ Bill Gates \ ...或\ Documents and settings \ ...