2011-10-19 00:35:44 +0000 2011-10-19 00:35:44 +0000
83
83

Comment puis-je trouver le chemin d'accès court d'un répertoire/fichier Windows ?

Je dois utiliser des noms de chemins raccourcis pour une application que j'utilise. Par exemple, j'ai besoin de C:\PROGRA~1 Je dois utiliser des noms de chemins raccourcis pour une application que j'utilise. Par exemple, j'ai besoin de au lieu deC:\Program Files. Le programme ne peut pas gérer les espaces et n'accepte pas les chemins d'accès entre guillemets (par exemple“C:\Program Files”`).

Si cela peut vous aider, j'utilise Windows 7. Je peux avoir accès à n'importe quelle version depuis XP, si nécessaire.

Réponses (12)

84
84
84
2011-10-19 00:51:45 +0000

Commencez, et tapez cmd dans la case “run”. Démarrez cmd, et utilisez cd pour accéder au dossier qui vous intéresse :

cd \

Puis

dir /x

C:\>dir /x

13/10/2011 09:14 AM <DIR> DOCUME~1 Documents and Settings
13/10/2011 09:05 AM <DIR> PROGRA~1 Program Files
42
42
42
2014-03-13 23:11:39 +0000

Créez un fichier bat dans un répertoire pratique, puis vous pouvez copier et coller le chemin d'accès court à partir de ce chemin.

Vous pouvez simplement exécuter command.com et continuer à faire des commandes cd dans votre répertoire actuel.

Dans les scripts batch Windows, %~s1 étend les paramètres du chemin d'accès à des noms courts . Créez ce fichier batch :

@ECHO OFF
echo %~s1

J'ai appelé le mien shortNamePath.cmd et je l'appelle comme ceci :

C:\> shortNamePath "c:\Program Files (x86)\Android\android-sdk"
c:\PROGRA~2\Android\ANDROI~1

Voici une version qui utilise le répertoire courant si aucun paramètre n'a été fourni :

@ECHO OFF
if '%1'=='' (%0 .) else echo %~s1

Appelé sans paramètres :

C:\Program Files (x86)\Android\android-sdk> shortNamePath
C:\PROGRA~2\Android\ANDROI~1

Utilisant SET et une variable nommée

L'invite de commande de Windows a quelques conventions pour traiter les variables avec des espaces dans leurs valeurs qui sont un peu difficiles à apprendre et à comprendre, surtout si vous avez un fond Unix. &nbsp ; You can do

SET TESTPATH=c:\Program Files (x86)\Android\android-sdk

(avec non guillemets), ou

SET "TESTPATH=c:\Program Files (x86)\Android\android-sdk"

(notez le placement non intuitif des guillemets) ; puis

CALL :testargs "%TESTPATH%"
        ︙

:testargs
echo %~s1
goto :eof
13
13
13
2017-05-22 06:42:16 +0000

Il y a une ligne de commande unique :

cmd /c for %A in ("C:\Program Files") do @echo %~sA

Décomposition :

  • cmd /c - Démarre une nouvelle instance de l'interpréteur de commandes Windows, exécute la commande spécifiée par une chaîne de caractères puis termine
  • for %%parameter in (set) do commande - Exécute conditionnellement une commande plusieurs fois.
  • echo - Affiche les messages à l'écran. Le symbole @ est le même que ECHO OFF appliqué à la ligne courante uniquement.
  • %~s - Le chemin étendu ne contient que des noms courts.

Sources :

9
9
9
2011-10-19 01:02:20 +0000

Le “nom court” est en fait l'ancienne convention d'appellation DOS 8.3, de sorte que tous les répertoires seront les 6 premières lettres suivies de ~1 en supposant qu'un seul nom corresponde, par exemple :

C:\ABCDEF~1 - C:\ABCDEFG I AM DIRECTORY
C:\BCDEFG~1 - C:\BCDEFGHIJKL M Another Directory

ici est la seule exception

C:\ABCDEF~1 - C:\ABCDEFG I AM DIRECTORY
C:\ABCDEF~2 - C:\ABCDEFGHI Directory as well
7
7
7
2018-05-12 11:16:06 +0000

J'ai trouvé un moyen très pratique de résoudre le nom du chemin d'accès court du répertoire courant (ou autre chose) si vous avez installé Powershell.

Ouvrez simplement powerhell dans le répertoire courant

  • dans cmd windows tapez powerhell

  • si vous avez un dossier ouvert dans gui vous pouvez taper cmd.exe ou powershell.exe directement dans la barre d'adresse du dossier.

Puis donnez la commande

(New-Object -ComObject Scripting.FileSystemObject).GetFolder(".").ShortPath

Origine de l'information : [https://gallery.technet.microsoft.com/scriptcenter/Get-ShortName-90a49303]

4
4
4
2018-05-12 15:31:59 +0000

Comme dans la réponse d'Ivan Schwartz, vous pouvez remplacer “C:\Program Files” par %cd% pour obtenir le répertoire actuel :

cmd /c for %A in ("%cd%") do @echo %~sA
0
0
0
2017-06-23 17:15:55 +0000

Vous pouvez également utiliser ce petit outil génial appelé PathCopyCopy

En quelques clics, vous pouvez obtenir le chemin long et court de n'importe quel dossier à partir du menu contextuel, par exemple :

Clic droit dans le dossier de destination => Copie du chemin => Chemin court.

Terminé. Il sera copié dans votre presse-papiers. preview

0
0
0
2019-11-03 14:38:08 +0000
@echo off
for %%i in (%*) do echo %%~si
pause

Enregistrez le sous le nom de shortpath.bat , puis faites glisser les fichiers dessus. Son résultat :

C:\PROGRA~1
C:\PROGRA~2
C:\PROGRA~3
C:\Python27
C:\Users
C:\Windows
Press any key to continue . . .

L'appeler avec shortpath <file path> est également correct.

0
0
0
2017-12-02 17:57:42 +0000
C:\Users\abcd>subst z: "c:\Program Files (x86)\Microsoft Office365 Tools\Microsoft Visual Studio 14.0"

C:\Users\abcd>subst
Z:\: => C:\Program Files (x86)\Microsoft Office365 Tools\Microsoft Visual Studio 14.0"

C'est le moyen le plus simple que j'ai utilisé pour traiter les fichiers comportant des espaces et il est accessible depuis l'explorateur de fichiers ; il a les mêmes privilèges d'accès.

0
0
0
2020-01-26 22:04:35 +0000

pour windows 10 utilisateurs** AUCUNE de ces solutions ne fonctionnait sur mon portable windows 10 car une clé du registre interdisait la création de noms courts.. :

  • Alt+r, tapez regedit pour ouvrir l'éditeur de registre
  • allez dans HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
  • cherchez la clé NtfsDisable8dot3NameCreation : si la valeur est 0x00000001(1), alors votre système ne crée aucun nom court pour votre dossier/fichier
  • dans ce cas, double-cliquez sur la clé NtfsDisable8dot3NameCreation,
  • tapez 0 dans le champ de données

cela n'est pas rétroactif :) Je veux dire que vous devez recréer le dossier/fichier auquel vous devez accéder depuis votre ancienne application… peut-être que quelque chose d'intelligent est possible bien que je ne le sache pas encore.

il semble qu'ils aient introduit cette clé pour accélérer les opérations du système de fichiers.

source microsoft https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-2000-server/cc959352(v=technet.10)?redirectedfrom=MSDN

-1
-1
-1
2016-11-06 10:51:58 +0000

J'ai installé des modules de nœuds en faisant tourner npm install sur un plateau. En essayant de supprimer ces dossiers, Windows ne nous permet pas de les supprimer car le chemin est trop long pour pouvoir le gérer.

Après quelques recherches superficielles, j'ai pensé qu'il serait bon que mon propre bout de code renomme les dossiers de la racine à la feuille afin qu'il lance une exception de violation pour cette tentative également.

Ça marche pour moi. Voici le code du projet C#.

public static int directoryCounterIndex = 0;
    public static void Main(string[] args)
    {
        string dirPath = @"D:\Studies\MeanStack\a\nodem";
        RenameDirectories(dirPath);
    }

    private static void RenameDirectories(string dirPath)
    {
        directoryCounterIndex += 1;
        var newPath = Path.GetDirectoryName(dirPath) + Path.DirectorySeparatorChar + directoryCounterIndex.ToString();
        Directory.Move(dirPath, newPath);
        var subDirectories = Directory.GetDirectories(newPath);
        foreach (var subDirectory in subDirectories)
        {
            RenameDirectories(subDirectory);
        }
    }
-2
-2
-2
2016-02-10 15:18:55 +0000

Il suffit de remplacer les espaces par

%20

C'est la façon dont les choses sont “traduites”, et les espaces vont dans %20.

Si vous avez vraiment besoin de beaucoup, ouvrez simplement votre navigateur et tapez quelque chose comme

test ";($#< and find the word test, and see that the space is %20 and so on...