florian88
Goto Top

Anhand des Dateinames, die Datei in ein anderes Verzeichnis verschieben

Hallo Liebe Forum-User,

ich habe folgendes Problem, wobei ihr mir vielleicht behilflich sein könntet.

Ich habe ein Quellverzeichnis (C:\temp), wo verschiedene Dateien liegen und ein Zielverzeichnis (D:\...).

Merkmale:

- Jede Datei fängt mit der gleichen Syntax an
- Ab dem 6 Buchstaben verändert sich der Name

Beispiel:

RDL00_n_
RDL00_k_
RDL00_o_

Nun möchte ich gerne alle Dateien aus dem Quellverzeichnis, die den Buchstaben "n" an der 6 Stelle besitzen in das Verzeichnis D:\MIT_n\ kopieren. Das gleiche mit den anderen, entsprechend in einen anderen Ordner.

Wie kann ich das am Besten lösen und habt ihr ein Lösungsansatz für mich.

Vielen Dank im Voraus für die Unterstützung.

Content-Key: 196963

Url: https://administrator.de/contentid/196963

Printed on: April 27, 2024 at 00:04 o'clock

Member: bastla
bastla Jan 14, 2013 updated at 16:33:53 (UTC)
Goto Top
Hallo Florian88!

Da drängt sich eine Zerlegung anhand des Trennzeichens "_" auf - ungetestet etwa:
@echo off & setlocal
set "Quelle=C:\temp"  
set "Ziel=D:\MIT_"  

pushd "%Quelle%"  
for /f "tokens=1,2* delims=_" %%a in ('dir /b/a-d') do xcopy "%%a_%%b_%%c" "%Ziel%%%b\"  
popd
Kurze Erklärung:
Nach dem vorübergehenden Wechsel in das Quellverzeichnis mit "pushd" wird ein Inhaltverzeichnis nur mit Dateinamen erzeugt und jeder der Namen zerlegt - durch die Trennung bei "_" entstehen 3 Tokens:
1 = %%a = "RDL00"
2 = %%b = "n" (oder "k" oder "o")
* = %%c = alles, was nach dem zweiten "_" noch folgt (inkl. Dateityp)
Die Verwendung von "xcopy" hat den Vorteil, dass, falls der Zielordner noch nicht existiert, dieser automatisch erstellt wird. Der Backslash am Ende der Zielangabe weist das Ziel als Verzeichnis aus, womit sich "xcopy" die entsprechende Rückfrage
Ist das Ziel MIT_n ein Dateiname
oder ein Verzeichnisname
(D = Datei, V = Verzeichnis)?
erspart ...

Grüße
bastla