C:\Documents and Settings\Administrator\Desktop
Je ne veux pas taper ce qui précède chaque fois de se référer à un fichier sur le bureauExiste-t-il un raccourci pour le dossier Bureau dans le lot Windows?
C:\Documents and Settings\Administrator\Desktop
Je ne veux pas taper ce qui précède chaque fois de se référer à un fichier sur le bureauExiste-t-il un raccourci pour le dossier Bureau dans le lot Windows?
Vous pouvez utiliser "%USERPROFILE%\Desktop"
mais je ne sais pas de quelle version de Windows, il est intégré.
Si votre voulez le réel dossier où Desktop est situé utilisez ce code dans le bach
pour/F "skip = 2 jetons = 3 * delims =" %% un dans ('reg query "HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ User Shell Folders "/v de bureau) ne fixent DesktopFolder = "%% un"
Cela requiert l'reg.exe être disponible (encore une fois, je ne sais pas à partir de quelle version de Windows il est là) et il va définir la variable DesktopFolder sur le chemin du bureau.
Si vous avez absolument besoin d'avoir un fichier de commandes, mais souhaitez utiliser la puissance de Windows hôte de script, vous voudrez peut-être essayer un WSH/batch hybrid
Lot/WSH hybride:
@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
Voir ShellSpecialFolderConstants Si vous avez besoin d'obtenir le chemin d'un autre dossier shell
@Johannes Rössel: Pourquoi ne pas faire votre propre réponse? Il a demandé un fichier batch et c'est ce que j'essaie de lui donner, sans fichiers externes. – Anders
Ah, désolé. Vous n'avez pas lu votre lien assez bien. J'ai simplement essayé de fournir du code, car une seule phrase n'est généralement pas très utile. De toute façon, je ferais tourner le contenu de WSH dans un fichier séparé, puisque c'est un gros problème à lire. Il n'a également aucun avantage sur un fichier séparé, car il dépend toujours que le WSH ne soit pas désactivé par GP. Une fois que vos fichiers de traitement par lots sont plus volumineux, vous devez probablement opter pour la lisibilité. Notez aussi que ce truc moche * @ nom * ne fonctionne que si j'ai un commentaire ici; Ce n'est pas un moyen général de s'adresser à quiconque sur ce site. – Joey
@Johannes Rössel: Comment un seul fichier par rapport à deux fichiers distincts n'est-il pas un avantage? En ce qui concerne @name, je sais que c'était la seule option que j'avais. – Anders
L'hybride de Anders peut être un peu plus simple et lisible, avec la méthode décrite ici hybrid scripting par Tom Lavedas.
@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);
'WScript.Echo (WScript.CreateObject (" WScript.Shell ") .SpecialFolders ("Desktop")); 'est plus court, et me semble plus lisible –
set UserDesktop=%UserProfile%\Desktop
if exist %Public% (
set SharedDesktop=%Public%\Desktop
) else (
set SharedDesktop=%AllUsersProfile%\Desktop
)
Alors maintenant, vous pouvez utiliser les variables locales
%UserDesktop%
et %SharedDesktop%
SharedDesktop Le premier cas est pour Vista et au-dessus du reste est pour XP
ps: avant d'utiliser ces variables que vous devez citer puis "% UserDesktop%" parce que le nom d'utilisateur doit avoir des espaces, comme ... \ Bill Gates \ ... ou \ Documents and sett ings \ ...
Cela ne fonctionnera pas si vous avez déplacé le bureau à un autre endroit" Desktop> Properties> Location " –
'% USERPROFILE%' est déjà disponible sous XP (et probablement plus tôt aussi). – Vlad
Il dit ne peut pas trouver 'C: \ Documents' – user198729
Notez que cela ne fonctionnera pas pour les versions localisées de Windows où le dossier' Desktop' a un autre nom. – Helen