Ich muss verkürzte Pfadnamen für eine Anwendung verwenden, die ich verwende. Zum Beispiel brauche ich C:\PROGRA~1\
im Gegensatz zu C:\Program Files
. Das Programm kann keine Leerzeichen verarbeiten und akzeptiert keine in Anführungszeichen gesetzten Pfade (z "C:\Program Files"
. B. ).
Wenn es hilft, verwende ich Windows 7. Bei Bedarf kann ich auf jede Version seit XP zugreifen.
/s
Schalter macht Unterordner RekursionErstellen Sie eine bat-Datei in einem geeigneten Verzeichnis, und kopieren Sie den Kurzpfad von diesem Pfad.
Sie könnten nur laufen
command.com
und halten dabeicd
auch Befehle in Ihrem aktuellen Verzeichnis.Erweitert in Windows-Stapelskripten die Pfadparameter
%~s1
zu Kurznamen . Erstellen Sie diese Batchdatei:Ich habe meins angerufen
shortNamePath.cmd
und nenne es so:Hier ist eine Version, die das aktuelle Verzeichnis verwendet, wenn kein Parameter angegeben wurde:
Aufruf ohne Parameter:
Using
SET
und eine benannte VariableDie Windows-Eingabeaufforderung enthält einige Konventionen zum Behandeln von Variablen mit Leerzeichen in ihren Werten, die etwas schwer zu erlernen und zu verstehen sind, insbesondere wenn Sie einen Unix-Hintergrund haben. Du kannst tun
( ohne Anführungszeichen ) oder
(Beachten Sie die nicht intuitive Platzierung von Anführungszeichen); dann
quelle
Hier ist ein Einzeiler :
Aufschlüsselung :
cmd /c
- Startet eine neue Instanz des Windows-Befehlsinterpreters, führt den durch string angegebenen Befehl aus und bricht dann abfor %%parameter in (set) do
Befehl - Führen Sie einen Befehl mehrmals bedingt aus.echo
- Meldungen auf dem Bildschirm anzeigen.@
Das Symbol entsprichtECHO OFF
nur der aktuellen Zeile.%~s
- Der erweiterte Pfad enthält nur Kurznamen.Quellen :
quelle
cmd /c
? Wenn Sie sich in einem Eingabeaufforderungsfenster befinden, können Sie denfor %A in ("C:\Program Files") do @echo %~sA
Befehl einfach eingeben. Wenn Sie diesen Befehl in das Dialogfeld "Ausführen" eingeben, wird das Ergebnis ausgeblendet, bevor Sie es lesen können.cmd /c
beim Ausführen von nichtcmd
. Sie brauchen es von PowerShell , aber dann müssen Sie auch'...'
die Token einschließen, nachdem/c
:cmd /c 'for %f in ("C:\Program Files") do @echo %~sf'
Der "Kurzname" ist in Wirklichkeit die alte DOS 8.3-Namenskonvention, sodass alle Verzeichnisse die ersten 6 Buchstaben sind, gefolgt von der
~1
Annahme, dass nur ein Name übereinstimmt, zum Beispiel:hier ist die einzige ausnahme
quelle
Program Files
undProgram Files (x86)
istPROGRA~1
und die einer istPROGRA~2
. Die Antwort von Paul löst dieses Problem....~4
) mit etwas begonnen haben, das wie Hashing aussieht, z. B.ABxxxx~1
wo x hexadezimal war - was nicht sehr einfach zu lesen ist.ABCDEFGH-CAT
, erhält es einen KurznamenABCDEF~1
. Wenn ich dann erstelleABCDEFGH-DOG
, bekommt es KurznamenABCDEF~2
. Wenn ich dann löscheABCDEFGH-CAT
,ABCDEFGH-DOG
hat das noch KurznamenABCDEF~2
. Es gibt keine Möglichkeit, nur anhand der langen Namen zu erkennen.~1
. Siehe die Regel, die Windows zum Generieren von Kurznamen verwendet . Und Sie können den Kurznamen auch manuell mit festlegenfsutil
, sodass die beiden Namen möglicherweise überhaupt keine Beziehung haben.Ich habe einen sehr praktischen Weg gefunden, um den kurzen Pfadnamen des aktuellen Verzeichnisses (oder etwas anderem) zu lösen, wenn Sie Powershell installiert haben.
Öffne einfach die PowerShell in der aktuellen Richtung
in cmd windows geben sie powershell ein
Wenn Sie einen Ordner in GUI geöffnet haben, können Sie cmd.exe oder powershell.exe direkt in die Adressleiste des Ordners eingeben.
Dann gib den Befehl
Herkunft der Informationen: [ https://gallery.technet.microsoft.com/scriptcenter/Get-ShortName-90a49303]
quelle
Ähnlich wie Ivan Schwartz Antwort mit: Sie können „\ Program Files C“ ersetzen
%cd%
bekommen aktuelles Verzeichnis:quelle
Alternativ können Sie dieses tolle kleine Tool namens PathCopyCopy verwenden
Mit wenigen Klicks können Sie den langen und den kurzen Pfad von praktisch jedem Ordner aus dem Kontextmenü abrufen, z.
Getan. Es wird in Ihre Zwischenablage kopiert.
Vorschau
quelle
Ich habe Knotenmodule installiert, indem ich
npm install
auf einem Boilerplate lief. Beim Versuch, diese Ordner zu löschen, können wir sie in Windows nicht löschen, da der Pfad zu lang ist, um verarbeitet zu werden.Nach einigen kurzen Recherchen dachte ich, es wäre mein eigenes Stück Code-Snippet, die Ordner von root in leaf umzubenennen, so dass es auch bei diesem Versuch zu einer Ausnahme von Verstößen kommt.
Für mich geht das. Es folgt der Code für das C # -Projekt.
quelle
Dies ist der einfachste Weg, den ich beim Umgang mit Dateien mit Leerzeichen verwendet habe, und auf den auch über den Datei-Explorer zugegriffen werden kann, verfügt über dieselben Zugriffsrechte.
quelle
Ersetzen Sie einfach die Leerzeichen durch
So werden Dinge "übersetzt" und Leerzeichen in% 20 eingefügt.
Wenn Sie wirklich viel brauchen, öffnen Sie einfach Ihren Browser und geben Sie etwas wie ein
quelle
if exist C:\Program%20Files\ (echo exists)