Massenumzug über CMD Regex

0

Ich habe ungefähr 15k Akten in einem flachen Faltblatt. Alle haben so etwas wie einen Namen blah blah - whatever.png. Grundsätzlich möchte ich sie alle in Ordner mit dem Namen verschieben blah blah. Ich möchte keine von ihnen umbenennen, stoße sie einfach in ihre jeweiligen Ordner. Ich stelle mir vor, dass ich dies mit einer Art Regex tun muss, aber ich kann nicht herausfinden, wie man Regex in diesem Kontext anwendet.

LincM
quelle
Ich habe gerade versucht , für% A IN (* .docx) DO "% A" bewegen "^ [^ -] * [^ -] /% A" Und es hat nicht funktioniert: /
LincM

Antworten:

1

Der forBefehl unterstützt keine regulären Ausdrücke.

Angenommen, alle Dateien enthalten ein -Zeichen, könnten Sie diesen Code wahrscheinlich in einer Batch-Datei verwenden:

for /f "delims=- tokens=1* usebackq" %%a in (`dir /b *.png`) do (
    if not exist "%%a" mkdir "%%a"
    move "%%a-%%b" "%%a"
)

delims=-teilt die Dateinamen auf -und gibt Ihnen den Verzeichnisnamen, der erstellt wird, wenn er noch nicht existiert. Als nächstes wird der ursprüngliche Dateiname %%a-%%bin dieses Verzeichnis verschoben.

Berend
quelle
Ich habe das versucht und die Ausgabe bestand darin, benannte Verzeichnisse blah blah - (einschließlich des Bindestrichs) zu erstellen , und es wurde nichts verschoben (vermutlich, weil die Namenskonvention des Verzeichnisses nicht übereinstimmte). Ich habe versucht, es ein bisschen durchzuarbeiten, aber ich habe es nicht geschafft, es vollständig zum Laufen zu bringen .
LincM
@LincM Das ist merkwürdig. Per Definition -sollte das nicht Teil sein %%a, da der Dateiname darauf aufgeteilt ist. Könnte es sein, dass es sich nicht wirklich um einen Bindestrich handelt, sondern um ein anderes Strichsymbol?
Berend
Ich glaube nicht, dass es ein anderes UTF ist. Möglicherweise wird dies als Stapelverarbeitung und nicht als Befehl verwendet, um festzustellen, ob es anders funktioniert.
LincM
@LincM, ja, dieser Code war als Batch gedacht. Ich werde das zu meiner Antwort hinzufügen
Berend
Ah, okay, das funktioniert. Ich hatte gehofft, die Struktur verstehen zu können, wie man dies direkt über die Kommandozeile ausführen kann, anstatt einen Batch auszuführen, aber das erreicht, was ich will, danke!
LincM,