Erhalte den Pfad einer Datei ohne ihren Namen

395
Fernando YP

Die Datei song.mp3 befindet sich in

C:\x-folders\y-folder\z-folder\song.mp3 

Wie kann ich diesen Pfad in einer Variablen speichern?

C:\x-folders\y-folder\z-folder\ 

Vielen Dank

1
Studieren Sie die 'FOR /?' - Ausgabe, insbesondere für '% ~ dpI'. Akina vor 5 Jahren 1

1 Antwort auf die Frage

1
Pimp Juice IT

Es gibt ein paar Möglichkeiten, dies von der Kommandozeile aus zu tun, und ich stelle zwei zur Verfügung, an die ich weiter unten denken kann, damit Sie nachschlagen und testen können, wann Sie eine Chance haben. Ich werde zusätzliche Ressourcen für weitere Studien hinzufügen.

Beispiel eins

for %a in ("C:\x-folders\y-folder\z-folder\song.mp3") do set var=%~dpa 

Dann %var%wird die gesetzte Variable also nur Referenz %var%für den anwendbaren Wert sein.


Beispiel zwei

Wenn Sie einen Ordner mit vielen .mp3Dateien durchlaufen müssen, können Sie diese Syntax verwenden

for /f "tokens=*" %a in ('dir /b "C:\SomeFolder\*.mp3"') do set var=%~fa\ 

Dann %var%wird die gesetzte Variable also nur Referenz %var%für den anwendbaren Wert sein. Sie können auf diese Weise referenzieren !var!, wenn Sie EnableDelayedExpansion benötigen, je nachdem, was genau Sie mit der Schleife erreichen müssen, wenn Sie auf viele Dateien und den darin enthaltenen Ordnerpfad verweisen möchten . Schließlich können Sie auch dir /s /bdas Verzeichnis rekursiv durchlaufen.


Weitere Ressourcen

  • Dir
  • Zum

    Variablensubstitutionen (FOR /?)

    Darüber hinaus wurde die Ersetzung von FOR-Variablenreferenzen verbessert. Sie können jetzt die folgende optionale Syntax verwenden:

    %~fI - expands %I to a fully qualified path name %~dI - expands %I to a drive letter only %~pI - expands %I to a path only 
  • EnableDelayedExpansion

    Bei einer verzögerten Erweiterung werden Variablen in einer Batchdatei nicht zur Analysezeit, sondern zur Ausführungszeit erweitert. Diese Option wird mit dem Befehl SETLOCAL EnableDelayedExpansion aktiviert.


    Wenn die verzögerte Erweiterung aktiviert ist, können Variablen sofort mit! Variable_name gelesen werden! Sie können auch noch% variable_name% lesen und verwenden, der den Anfangswert (erweitert am Anfang der Zeile) anzeigt.

Sehr informative Antwort. Tim_Stewart vor 5 Jahren 0