2010-04-07 62 views

回答

8

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

如果你想真正其中桌面位于然后在巴赫

FOR/F “跳过= 2个令牌= 3 * delims =” %%在 (“REG查询使用此代码 “HKEY_CURRENT_USER \软件\微软\的Windows \ CurrentVersion \ Explorer中\用户 Shell文件夹”/ V桌面“)并设置 DesktopFolder = ”%%一个“

这就要求REG.EXE可用(再次,我不知道它是从哪个版本的窗口),它会将DesktopFolder变量设置为桌面的路径。

+3

'%USERPROFILE%'已经可以在XP上使用(也可能更早)。 – Vlad 2010-04-07 09:41:02

+0

它说找不到'C:\ Documents' – user198729 2010-04-07 09:46:18

+2

请注意,这不适用于桌面文件夹具有其他名称的本地化Windows版本。 – Helen 2010-04-07 09:46:42

1

如果您确实需要有一个批处理文件,但希望使用Windows脚本宿主的能力,你可能会想尝试一个WSH/batch hybrid

批次/ WSH混合:

@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 

ShellSpecialFolderConstants如果您需要获取其他shell文件夹的路径

+0

@JohannesRössel:为什么不自己做出答案?他要求一个批处理文件,这就是我想给他的,没有外部文件。 – Anders 2010-04-11 12:22:13

+0

啊,对不起。没有足够好的阅读你的链接。我只是试图提供代码,因为一句话通常不是很有帮助。无论如何,我会把WSH的东西放在一个单独的文件中,因为这看起来很麻烦。它也没有优于单独的文件,因为它仍然依赖于未通过GP禁用WSH。一旦你的批处理文件变大了,你可能会想要提高可读性。还要注意,如果我在这里发表评论,那么丑陋的* @名称*的东西才有效;这不是解决本网站任何人的一般手段。 – Joey 2010-04-11 14:06:49

+0

@JohannesRössel:1个单独文件与2个独立文件没有优势?至于@name,我知道,这是我唯一的选择。 – Anders 2010-04-11 14:31:47

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

'WScript.Echo(WScript.CreateObject(“WScript.Shell”)) .SpecialFolders(“Desktop”));'更短,看起来更易读 – 2012-06-10 13:48:32

0
set UserDesktop=%UserProfile%\Desktop 

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

所以,现在你可以使用本地变量

%UserDesktop%%SharedDesktop%

SharedDesktop第一种情况是Windows Vista和上述其他是XP

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

+0

如果将桌面移动到另一个位置“桌面>属性>位置” – 2015-07-11 09:26:56

相关问题