/ / Batch-Datei oder Skript zum Verschieben von Dateien auf X-Ebenen - Windows, Batch-Datei, Parent, Move

Batch-Datei oder Skript zum Verschieben von Dateien auf X-Ebenen - Windows, Batch-Datei, Eltern, verschieben

Derzeit verwenden wir eine Maschine, die bei der Ausgabe ihrer Daten eine komplizierte Ordnerstruktur erzeugt und anschließend die Ordnerhierarchie der generierten Daten vereinfachen möchte.

In unserer aktuellen Einstellung sehen die Verzeichnisse folgendermaßen aus:

C: Dir01Dir02Dir03Dir4 *. *
C: Dir01Dir02ADir03Dir4 *. *
C: Dir01Dir02BDir03Dir4 *. *
C: Dir01Dir02CDir03Dir4 *. *
C: Dir01Dir02DDir03Dir4 *. *
etc.

Im Ordner Dir01 werden alle unsere Beispieldaten kopiert

Die Dir02-Ordner werden für jedes einzelne Sample erstellt und haben jeweils einen eindeutigen Namen.

Das Dir03 enthält nur den Dir04-Ordner

Dir03 und Dir04 haben normalerweise jedes Mal den gleichen Namen (innerhalb eines eindeutigen Namens Dir02)

In Dir04 befinden sich alle eigentlichen Daten und für jede Probe ist eine Reihe von Dateinamen enthalten ... d. H. Datei.001 Datei.002 Datei.003

Die Dir04-Daten würden idealerweise für jedes Sample in den Ordner Dir02 verschoben, und dann sollten die Ordner Dir03 und Dir04 nach dem Verschieben gelöscht werden.

Ich möchte bestimmte Dateien in Dir02 nach dem Verschieben weiter trennen und einen neuen Ordner (Dir02A) unter Dir01 erstellen, um diese Dateien zu verschieben.

Am Ende möchte ich eine Verzeichnisstruktur wie diese haben:

C: Dir01Dir02 *. *
C: Dir01Dir02A *. *
C: Dir01Dir02B *. *
C: Dir01Dir02C *. *
C: Dir01Dir02D *. *
etc.

Sobald dies abgeschlossen ist, habe ich eine Batch-Datei, dieVerwendet Robocopy, um die gesamte Verzeichnisstruktur zu duplizieren und die Nicht-* .dcm-Dateien in einen neuen Ordner zu unterteilen. Dadurch bleibt jedoch meine komplizierte Verzeichnisstruktur erhalten.

robocopy.exe "%SourcePath%" "%DestPath%" /s /xf *.dcm

Das ist mein vorrangiges Ziel ... mich von unnötiger Verzeichnisnavigation zu befreien.

==================
Rekapitulieren:
1) Daten werden unter Dir01 in eindeutigen Ordnern (Dir02, Dir02A, ​​Dir02B ...) generiert
2) Führen Sie eine Batchdatei oder ein Skript aus, um die Daten unter Dir01 nachzubearbeiten
3) Verschieben Sie Daten aus jedem Dir04-Unterordner in die übergeordneten Ordner Dir02, Dir02A, ​​Dir02B usw.
4) Bereinigen Sie die (jetzt leeren) Ordner Dir03 und Dir04 unter jedem Ordner Dir02, Dir02A, ​​Dir02B usw.
5) Führen Sie meine Robocopy-Batchdatei aus, um alle Nicht-* .dcm-Dateien an einen neuen Speicherort zu verschieben

Antworten:

0 für die Antwort № 1

Hast du so etwas probiert?

cd /d c:dir01dir02
forfiles /s /m "*.dcm" /c "cmd.exe /c move @path @path...."

0 für die Antwort № 2

Dies als Batch-Datei sollte den ersten Teil erledigen:

  1. Führen Sie alle Beispielordner durch
    1. für jeden, z.B. c:outDir02F Bewegung c:outDir02Fdir03dir04* in c:outDir02F*
    2. Entfernen Sie die Unterordner Dir03 und Dir04

Bearbeiten Sie es natürlich so, dass es die richtigen Ordner abdeckt, und fügen Sie möglicherweise am Ende etwas hinzu, um Ihr Robocopy-Skript für jeden Ordner aufzurufen. Kurz getestet, aber zuerst auf einer Kopie ausprobieren.

for /D %%s in (c:out*) do (
move "%%sDir03Dir04*" "%%s"
rmdir "%%sDir03Dir04"
rmdir "%%sDir03"
)

Für Kommentar bearbeiten: Es wird jeder Dir02-Ordner in Dir01 behandelt. Ich denke, es könnte sogar so umgeschrieben werden:

for /D %%s in (d:t*) do (
for /D %%y in (%%s*) do (
for /D %%z in (%%y*) do (
move "%%z*" "%%s"
)
rmdir /Q /S %%y
)
)

Zumindest in meinem Schnelltest funktioniert das ohne Rücksicht darauf, was Dir03 und Dir04 heißen.