Ich benötige einen Befehl, der über die Befehlszeile ausgeführt werden kann, um einen Ordner für jede Datei (basierend auf dem Dateinamen) in einem Verzeichnis zu erstellen und die Datei dann in die neu erstellten Ordner zu verschieben.
Beispiel:
Startordner:
Dog.jpg
Cat.jpg
Der folgende Befehl eignet sich hervorragend zum Erstellen eines Ordners für jeden Dateinamen im aktuellen Arbeitsverzeichnis.
for %i in (*) do md "%~ni"
Ergebnisordner:
\Dog\
\Cat\
Dog.jpg
Cat.jpg
Ich muss noch einen Schritt weiter gehen und die Datei in den Ordner verschieben.
Was ich erreichen möchte, ist:
\Dog\Dog.jpg
\Cat\Cat.jpg
Kann mir jemand mit einem Befehl helfen, all dies zu tun?
windows
batch-file
Tom
quelle
quelle
for %i in (*) do cmda && cmdb
B) könnte zuerst widerhallenfor %i in (*) do @ECHO cmda && cmdb
C) könnte hinzufügen Ich denke, es ist ein / R, um Unterverzeichnisse zu durchlaufen.for %i in (*) do move "%~i" "%~ni"
Auch das ist möglicherweise nicht gut genug, da es Nebenwirkungen haben kann, wenn der Zielordner nicht vorhanden ist (z. B. Dateien, die über sich selbst "verschoben" und daher umbenannt werden). Eine einfache Lösung wäre, beide Befehle wie folgt zu kombinieren:for %i in (*) do md "%~ni" && move "%~i" "%~ni"
Der Befehl setzt voraus, dass die Verzeichnisse noch nicht vorhanden sind.cmda && cmdb
danncmdb
ausgeführt werden , wenn nurcmda
erfolgreich war. Wenn Siecmda & cmdb
stattdessen verwenden würden, würde der zweite Befehl unabhängig davon ausgeführt. Tatsächlich ist ein einzelnes kaufmännisches Und (&
) nur ein Befehlstrennzeichen und das doppelte kaufmännische Und (&&
) ein bedingtes Trennzeichen . Befehle, die keinenerrorlevel
Wert festlegen , sollten mit letzterem nicht verwendet werden.Führen Sie einfach diese Befehle in Reihe aus:
So erstellen Sie die Ordner für jede Datei:
So verschieben Sie jede Datei in ihren Ordner:
quelle
Dies ist der Fall, wenn Sie einige Ordner haben, z. B.: Beispiel Jahre \ Dateiname.mp4
Es werden alle Dateien der ersten Ebene des Ordners aufgelistet. listet alle * .mp4 und * .mkv auf, erstellt die Ordner mit zwei Ebenen mit dem Dateinamen und verschiebt alle Dateien mit demselben Namen im Ordner der ersten Ebene in den Ordner der zweiten Ebene. Führen Sie sie im Basisordner des Jahres aus.
Wenn Sie keinen YEARS-Ordner der ersten Ebene haben, können Sie einfach den ersten für umgehen und den zweiten Schritt ausführen. Führen Sie ihn im Dateinamen-Basisordner aus.
Das && stellt sicher, dass das vorherige mkdir% ERRORLEVEL% 0 ist, um das Verschieben der Dateien auszuführen
Verwenden Sie zum Testen Folgendes:
quelle