So erstellen Sie in der Eingabeaufforderung einen Ordner mit demselben Namen wie eine Datei (Unterordner rekursiv verwenden)

So erstellen Sie in der Eingabeaufforderung einen Ordner mit demselben Namen wie eine Datei (Unterordner rekursiv verwenden)

Ok, ich habe über 15.000 Dateien, mit denen ich das machen muss.
Ich habe Folgendes versucht. Mein Stammverzeichnis ist C:\asf> der Befehl:for /r %x in (*.asf) do aifdump -hr "%x" "%CD%"

aber die Dateien gehen in mein Stammverzeichnis und werden überschrieben.
Die Syntax für aifdump ist aifdump.exe [Option] [ASF_path] [Texture_dump_path] Jede Methode zur Behebung dieses Problems ist in Ordnung, auch wenn Sie Python oder ähnliches verwenden. Danke für Ihre Hilfe

hier ist ein Beispiel, falls Sie damit arbeiten müssen:http://www.mediafire.com/?e9jwa3tkedilcy5

danke für eure Hilfe Michael und Bob. Wenn ich den Befehl ausführe, passiert Folgendes

C:\asf>for /r %x in (*.asf) do aifdump -hr "%x" "%~dpnx"

C:\asf>aifdump -hr "C:\asf\9\0.asf" "C:\asf\9\0"

Texture 0.dds : 2.00 KB

und dann stürzt aifdump ab. ich habe herausgefunden, dass wenn ich den Ausgabeordner vorher erstelle

Wenn ich den Befehl ausführe, funktioniert es. Wie kann ich den Befehl also überarbeiten, um

die benötigten Verzeichnisse vor dem Ausführen des Befehls für aifdump.

Ich habe es herausgefunden, ich musste nur ändern aifdump -hrzumkdir

nochmals vielen Dank für eure Hilfe

Antwort1

%CD%gibt immer das Verzeichnis zurück, in dem Sie sich beim Ausführen des Befehls befanden; in diesem Fall ist das C:\asf'. Wenn ich Ihre Frage richtig verstehe, möchten Sie, dass jeder von ihnen in ein separates Verzeichnis geht? In diesem Fall müssen Sie nur diesen Verzeichnisnamen in Ihren Befehl einbauen.

Beachten Sie jedoch, dass Siekann nichteine Datei und einen Ordner mit dem gleichen Namen und dem gleichen übergeordneten Pfad haben; wenn Sie beispielsweise eine Datei mit dem Namen haben C:\asdf\asdf.asf,kann nichtErstellen Sie auch einen Ordner mit einem Namen, C:\asdf\asdf.asfda der Pfad mehrdeutig wäre.

Die einfachste Möglichkeit wäre, die Dateierweiterung zu entfernen. Dies forkann der folgende Befehl für Sie erledigen:

for /r %x in (*.asf) do aifdump -hr "%x" "%~dpnx"

HINWEIS: %~dpnxist eine Verkettung von drei Modifikatoren und gibt das Laufwerk, den Pfad und den Namen (ohne Erweiterung) des in der Variablen x enthaltenen Dateinamens an.

Antwort2

Sie möchten also, dass sich der Ausgabepfad an derselben Stelle befindet wie die Quelldatei?

for /r %x in (*.asf) do aifdump -hr "%x" "%~dpx"

Dies %~ist ein spezieller Modifikator, siehe for /?. Wenn %xist C:\asf\blah\bleh\file.asf: dpzeigt Laufwerk ( C:) und Pfad ( \asf\blah\bleh\) an, wodurch C:\asf\blah\bleh\.

verwandte Informationen