
Ich habe viele Ordner und sie haben die folgende Namenskonvention:
- Ordner1(1924)
- Ordner2(2014)
- Ordner 3 (1999)
- Ordner4(2001)
- Ordner5(1891)
Jetzt würde ich gerne alle Ordner im Explorer verschieben/finden, deren Jahr (zwischen den ()
) unter dem Jahr 2000 und über dem Jahr 1900 liegt
Die Ausgabe läge also bei Ordner1 und Ordner3.
Gibt es ein Skript, das dies kann?
Antwort1
Wenn sich alle diese Ordner darunter befinden C:\Source folder
, führen Sie die folgende Batchdatei aus C:\Source folder
:
@echo off
set dest=D:\Target folder
for /f "tokens=1,2 delims=()" %%d in ('dir /ad /b') do (
if %%e gtr 1900 (
if %%e lss 2000 (
if not exist "%dest%\%%d(%%e)\" md "%dest%\%%d(%%e)"
robocopy "%%d(%%e)" "%dest%\%%d(%%e)" /e /is /move
)
)
)
Antwort2
Hier ist ein Beispiel dafür (vorausgesetzt, alle Verzeichnisse befinden sich auf einer Ebene):
find . -type d -name "fold*" -maxdepth 1|awk -F'[()]' '{if ($2 > 1900 && $2 < 2000) print $0}'
Wenn Sie es unter Windows ausführen möchten, verwenden Sie am besten eine Cygwin-Umgebung (auch Mobaxterm funktioniert gut) und führen Sie es im Terminal aus. Leider sind meine Windows-Kenntnisse sehr bescheiden und ich kann es nicht für ein natives Cmd-Skript umschreiben.