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

Wie kann ich den kurzen Pfad eines Windows-Verzeichniss/einer Windows-Datei finden?

Ich muss für eine von mir verwendete Anwendung verkürzte Pfadnamen verwenden. Ich brauche zum Beispiel C:\PROGRA~1 Ich muss für eine von mir verwendete Anwendung verkürzte Pfadnamen verwenden. Ich brauche zum Beispiel im Gegensatz zuC:\Program Files. Das Programm kann nicht mit Leerzeichen umgehen und akzeptiert keine in Anführungszeichen gesetzten Pfade (z.B.“C:\Program Files”`).

Falls es hilft, ich benutze Windows 7. Ich kann auf jede Version seit XP zugreifen, falls nötig.

Antworten (12)

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

Start, und geben Sie cmd in das Feld Ausführen ein. Starten Sie cmd, und verwenden Sie cd, um zu dem Ordner zu gelangen, der Sie interessiert:

cd \

Dann

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

Erstellen Sie eine Fledermausdatei in einem geeigneten Verzeichnis, dann können Sie den kurzen Pfad per Kopieren+Einfügen aus diesem Pfad kopieren.

Sie könnten einfach command.com ausführen und die Befehle cd auch weiterhin in Ihrem aktuellen Verzeichnis ausführen.

In Windows-Batch-Skripten %~s1 erweitert Pfadparameter zu Kurznamen . Erstellen Sie diese Batch-Datei:

@ECHO OFF
echo %~s1

Ich habe meine shortNamePath.cmd aufgerufen und nenne sie so:

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

Hier ist eine Version, die das aktuelle Verzeichnis verwendet, wenn kein Parameter angegeben wurde:

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

Ohne Parameter aufgerufen:

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

Verwendung von SET und einer benannten Variablen

Die Windows-Eingabeaufforderung hat einige Konventionen für die Behandlung von Variablen mit Leerzeichen in ihren Werten, die etwas schwer zu lernen und zu verstehen sind, besonders wenn Sie einen Unix-Hintergrund haben.   You can do

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

(mit no Anführungszeichen), oder

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

(beachten Sie die nicht-intuitive Platzierung von Anführungszeichen); dann

CALL :testargs "%TESTPATH%"
        ︙

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

Hier ist ein Einzeiler :

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

Breakdown :

  • cmd /c - Startet eine neue Instanz des Windows-Befehlsinterpreters, führt den durch String angegebenen Befehl aus und beendet dann
  • for %%parameter in (set) do command - Bedingte mehrmalige Ausführung eines Befehls.
  • echo - Meldungen auf dem Bildschirm anzeigen. Das Symbol @ ist dasselbe wie ECHO OFF, das nur auf die aktuelle Zeile angewendet wird.
  • %~s - Erweiterter Pfad enthält nur Kurznamen.

Sources :

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

Der “Kurzname” ist eigentlich die alte DOS 8.3-Namenskonvention, so dass alle Verzeichnisse die ersten 6 Buchstaben gefolgt von ~1 sind, vorausgesetzt, es gibt nur einen passenden Namen, zum Beispiel:

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

hier ist die einzige Ausnahme

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

Ich habe einen sehr praktischen Weg gefunden, den kurzen Pfadnamen des aktuellen Verzeichnisses (oder irgendetwas anderes) zu lösen, wenn Sie Powershell installiert haben.

Öffnen Sie einfach powershell im aktuellen Verzeichnis

  • in cmd-Fenstern geben Sie powershell

ein - wenn Sie einen Ordner in der GUI geöffnet haben, können Sie cmd.exe oder powershell.exe direkt in die Adressleiste des Ordners eingeben.

Geben Sie dann den Befehl

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

Herkunft der Information ein: [https://gallery.technet.microsoft.com/scriptcenter/Get-ShortName-90a49303]

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

Ähnlich wie in Ivan Schwartz’ Antwort können Sie “C:\Program Files” durch %cd% ersetzen, um das aktuelle Verzeichnis zu erhalten:

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

Alternativ können Sie auch dieses kleine Tool namens PathCopyCopyCopy

verwenden. Mit ein paar Klicks können Sie den langen und kurzen Pfad von buchstäblich jedem Ordner aus dem Kontextmenü abrufen, z.B.:

Rechtsklick in den Zielordner => Pfad kopieren => Kurzer Pfad.

Fertig. Es wird in die Zwischenablage kopiert. preview

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

Speichern Sie sie als shortpath.bat , und ziehen Sie dann Dateien darauf. Das Ergebnis:

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

Das Aufrufen mit shortpath <file path> ist ebenfalls OK.

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"

Dies ist die einfachste Methode, die ich im Umgang mit Dateien mit Leerzeichen verwendet habe, und auch der Datei-Explorer hat dieselben Zugriffsrechte.

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

für Windows 10-Benutzer** KEINE** dieser Lösungen funktionierte auf meinem Windows 10-Laptop, da ein Schlüssel in der Registrierung die Erstellung von Kurznamen verbot. :

  • Alt+r, geben Sie regedit ein, um den Registry-Editor zu öffnen
  • gehen Sie zu HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
  • suchen Sie nach dem Schlüssel NtfsDisable8dot3NameCreation : wenn der Wert 0x0000000001(1) ist, dann erzeugt Ihr System keinen Kurznamen für Ihren Ordner/Datei
  • in diesem Fall doppelklicken Sie auf den Schlüssel NtfsDisable8dot3NameCreation,
  • geben Sie 0 in das Datenfeld ein

das ist nicht rückwirkend :) Ich meine, Sie müssen den Ordner/die Datei neu erstellen, auf den/die Sie von Ihrer alten Anwendung aus zugreifen müssen… vielleicht ist etwas Cleveres möglich, obwohl ich es noch nicht weiß.

es scheint, dass sie diesen Schlüssel eingeführt haben, um Dateisystemoperationen zu beschleunigen.

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

Ich habe Knotenmodule installiert, indem ich npm install auf einem Boilerplate ausgeführt habe. Beim Versuch, diese Ordner zu löschen, erlaubt es uns Windows nicht, sie zu löschen, da der Pfad zu lang ist, um damit umgehen zu können.

Nach einigen oberflächlichen Nachforschungen dachte ich, es wäre richtig, mein eigenes Stück Code-Snippet die Ordner von root in leaf umzubenennen, so dass es auch bei diesem Versuch jede Ausnahme einer Verletzung auslösen würde.

Es funktioniert bei mir. Nachfolgend ist der Code für das C#-Projekt.

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

Ersetzen Sie einfach die Leerzeichen durch

%20

So werden die Dinge “übersetzt”, und Leerzeichen gehen in %20.

Wenn Sie wirklich viel brauchen, öffnen Sie einfach Ihren Browser und tippen Sie etwas wie

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