Un Système Est-Il Défini La Variable D'Environnement Pour Le Répertoire Documents?
Que je sais sur les %USERPROFILE%
système défini la variable d'environnement sous Windows XP (et Vista et Windows 7). Un système est-il défini la variable d'environnement pointant vers l'emplacement de le "Mes Documents" répertoire? Sur XP, par défaut, il %USERPROFILE%\My Documents
et sur Win 7 c'est %USERPROFILE%\Documents
. Je voulais juste éviter d'avoir à tester la version de l'OS dans un script Powershell si je peux l'éviter.
- Comme une réponse, il n'y a pas de Variable d'Environnement pointant vers Mes Documents, mais il est
Environment.GetFolderPath(Environment.SpecialFolder.Mydocuments)
(C#) pour .NET. Je suis principalement l'ajout de ce commentaire car cette question revient quand googler pour C#, les variables d'environnement et mes documents et la solution la plus simple dans .NET est à l'aide de la méthode ci-dessus. - Vous devez avoir posté en réponse @flindeberg, j'aurais voté il. Bon à savoir.
- Je l'ai ajouté comme une réponse maintenant 🙂
- Dans windows il y a un
junction
que des liensdocuments
àmy documents
. ` <JONCTION> Mes Documents [C:\Users\Philip\Documents]`
Vous devez vous connecter pour publier un commentaire.
Sur mon défaut-installation de XP, il n'y a pas de variable d'environnement pour que. Vous pouvez dresser la liste de toutes les variables avec la commande "set" (pas de paramètres ) dans la ligne de commande. Donc, probablement que vous avez à faire un test.
Si vous ne voulez pas tester pour la version de l'OS, vous pouvez simplement vérifier si les "Documents" existe et si non, alors essayer de "Mes Documents" ou vice versa. Ce n'est pas parfait cependant, parce que s/o pourrait avoir un dossier "Documents" sur sa machine XP.
Btw: mon système est allemand, donc le dossier est appelé "Dokumente". Vous pourriez avoir besoin de prendre en compte.
Le chemin d'accès à ce dossier est stocké dans
sous
Personal
. Vous avez besoin d'accès au registre, si.Source: Microsoft
Pour powershell, les travaux suivants:
et en évitant les chaînes magiques
Pour .NET le suivant est vrai (c'est à dire pas applicable dans tous applications windows):
Comme une réponse, il n'y a pas de Variable d'Environnement pointant vers Mes Documents, mais il est
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
(C#) pour .NET.Je suis l'ajout de cette réponse étant donné que cette question revient quand googler pour C#, les variables d'environnement et mes documents et Justin réponse ne contient pas la ligne de code 🙂
À l'aide de l'mentionnés ci-dessus de la ligne de code est la voie privilégiée pour accéder à mes documents .NET 🙂
Copier-coller de cette ligne pour C# usage:
Remarque que le C# a besoin d'un capital D dans Mesdocuments.
Il n'y a pas intégré de l'environnement variable, mais dans PowerShell, vous pouvez trouver l'emplacement avec:
Vous pouvez bien évidemment créer une variable d'environnement avec:
[Environment]::GetFolderPath([Environment+SpecialFolder]::MyDocuments
[Environment+SpecialFolder]
indique le sous-typeSpecialFolder
, qui est un type enum est imbriqué dans leEnvironment
statique de la classe. À l'aide de l' + précéder le nom de la classe imbriquée est une représentation commune pour une classe imbriquée. Voir docs.microsoft.com/en-us/dotnet/api/... (dans la section des Remarques)(Juste pour rappeler les réponses précédentes) Il n'y a pas de variable d'environnement fournis à l'extérieur de la boîte (WinXP) pour le dossier "Mes Documents" répertoire.
Cependant, vous pouvez définir une variable avec la commande suivante:
Testé sur Windows 7 /8.1:
ou (un liner)
Qui serait alors donnez-vous une
%mydocuments%
variable:(Peut-on utiliser XP/Vista? Si oui, pouvez tester cela et laissez-nous savoir si cela fonctionne?)
%b
variable, comme ceci:FOR /F "tokens=3* delims= " %a in ('reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Personal"') do (set mydocuments=%a %b)
<--.tokens=2*
et puisset mydocuments=%b
.Si vous tapez:
Dans une invite de commande, vous obtiendrez une liste de toutes les variables d'environnement définies sur votre système.
À la recherche à celles définies sur la mienne (Windows 7 Home Premium) aucun d'entre eux semblent pointer vers Mes Documents.
FYI:
La SHGetSpecialFolderPath) fonction peut être utilisée pour obtenir le chemin d'accès au répertoire Mes Documents. Sinon le De l'environnement.GetFolderPath méthode peut être utilisée sous .Net
comme vous pouvez le voir il n'y a aucune une telle vairable.
En plus de réponses sur la base de registre, .NET et PowerShell, vous pouvez également utiliser
WshSpecialFolders
de WSH. Voici un autonome commande/script batch qui démontre comment:Il émet un script WSH en JScript et l'utilise pour obtenir un ou plusieurs chemins d'accès pour le dossier spécial jetons fournis en arguments. En supposant que vous enregistrez le script ci-dessus dans un fichier appelé
specialf.cmd
, l'utilisation pour l'obtention de chemin d'accès aux documents de l'utilisateur courant répertoire serait:Voici une autre utilisation de tester tous les dossier spécial jetons:
Vous pouvez l'utiliser pour la capture dans un environnement variable comme ceci:
Une certaine confusion peut-être en raison de la disponibilité de CSIDL/KNOWNFOLDERID valeurs de vs de commande shell variables d'environnement.
CSIDL
s peut être utilisé en PowerShell avecSheGetSpecialFolderPath
. Voir Justin réponse pour plus de détails.Pour un fichier de commandes dans Windows 7 (au moins), Nick G de la solution a besoin d'un léger réglage pour définir la variable définie par l'utilisateur UserDocuments :
Note les seules différences sont,
Pour éviter de voir la ligne, mais à voir les résultats, utilisez :
Merci Nick G. Votre réponse m'a beaucoup appris. J'espère que cela aide quelqu'un d'autre.
Amélioré @NickGrealy réponse:
reg query
sorties%a %b
chaîne n'est pas correct dans ce casDonc, en utilisant le
skip=2
option pour ignorer les premières lignes et letokens=2*
option pour passer à une valeur de registre à la%b
var:ou pour les fichiers de script:
Mais en tenant compte de la valeur de registre
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\!Do not use this registry key]
Basé sur @AtifAziz réponse:
Il n'existe pas, par conception, un des documents de la variable d'environnement windows. Vous devez créer une personnalisée. Pour ce faire, aller ici. Définir une variable d'environnement appelée DOCUMENTS de référence, selon l'endroit que vous devez référencés. Par la suite, elle doit être une variable d'environnement de référence en %MYDOCUMENTS%.
Testé et worrking dans win XP, vista, 8, 8.1 et 10!!
Windows Fichier De Commandes (.chauve-souris) ou Script de Commande Windows (.cmd)
mise à jour de Windows Fichier de commandes (.chauve-souris) ou Script de Commande Windows (.cmd)
%USERPROFILE%\My Documents
est%USERPROFILE%\Dokumente
, en polonais%USERPROFILE%\Moje Dokumenty
, cependant Win XP en cours d'exécution est plutôt rare, alors j'aimerais l'enlever à tousVoici la liste complète des variables utilisateur pour tous les utilisateurs de Windows.
Le reg query partie du code constaterez que la valeur et le configurer de sorte qu'il peut être utilisé immédiatement et permet à l'autre de codes pour définir de façon permanente pour tous les utilisateurs.
L'annonce de registre partie du code de l'activer pour tous les utilisateurs. Le setx fait de sorte que vous n'avez pas à vous déconnecter et vous reconnecter pour être en mesure d'utiliser les codes.
L'utilisateur actuel variables ne s'applique qu'à la personne qui a installé ce code.
En fait, la
%USERPROFILE%\My Documents
devrait fonctionner dans Windows 7. C'est ce que j'utilise.