Dateien mit Batch nach Namensanfang in verschiedene Ordner kopieren bzw umbenennen
Hallo zusammen,
ich habe vorab versucht durch andere Threads mein Problem zu lösen und mich in die Batch-Programmierung einzulesen, da meine Frage zu den anderen doch sehr ähnlich ist und recht häufig vorkommt. Da sich das ganze jedoch als schwieriger herausgestellt hat als erwartet, hoffe ich auf eure Unterstützung.Hier nun mein Problem:
Grundsätzlich möchte ich Dateien in verschiedene Ordner kopieren und gegebenenfalls umbennen. Auswahlkriterium ist hierbei der Name der Dateien.
Ich habe ein Hauptverzeichnis, in dem alle Dateien hinterlegt sind, diese haben z.B den Namen:
"G01 Box21 13.04.08-15.36.25" ; "G01 Box21 13.04.10-15.12.25"
"G02 Box21 13.04.08-15.42.50" ; "G02 Box21 13.04.10-15.10.02"
"G03 Box21 13.04.08-15.55.20" usw. (Gxx xxxxx Datum-Uhrzeit)
Nun möchte ich je nach Namensanfang, also G01,G02,G03 usw, die Dateien in verschiedene Ordner kopieren (Ordner und Hauptverzeichnis auf selbem Laufwerk). Diese sind schon vorab erstellt und benannt. Schwierigkeit bereitet haben mir dabei die Leerzeichen im Dateinamen...
Wenn möglich wäre es gut, die Dateien noch wie folgt unzubenennen:
Von "G01 Box21 13.04.08-15.36.25" zu z.B. "G01 VV90T 13.04.08-15.36.25", wobei nur alle mit dem selben Namensanfang gleich umbenannt werden sollen, sprich
"G02 Box21 13.04.08-15.42.50" soll hingegen zu "G02 VV120T 13.04.08-15.42.50" umbenannt werden. Dabei können die Bezeichnung wie "Box21", sowie "VV90T" variabel lang sein. Das Umbenennen wäre nur der "Feinschliff", wichtig wäre erstmal die Dateien in verschiedene Ordner zu kopieren. (Ich habe bewusst die Pfade und Namen, zu denen die Dateien umbenannt werden sollen, nicht explizit angegeben, da die Batch-Datei möglichst allgemeingültig sein soll, natürlich nur wenn das möglich ist)
Ich hoffe ich habe alle wichtigen Infos abgedeckt und bedanke mich schonmal im Voraus
MFG Nudl92
ich habe vorab versucht durch andere Threads mein Problem zu lösen und mich in die Batch-Programmierung einzulesen, da meine Frage zu den anderen doch sehr ähnlich ist und recht häufig vorkommt. Da sich das ganze jedoch als schwieriger herausgestellt hat als erwartet, hoffe ich auf eure Unterstützung.Hier nun mein Problem:
Grundsätzlich möchte ich Dateien in verschiedene Ordner kopieren und gegebenenfalls umbennen. Auswahlkriterium ist hierbei der Name der Dateien.
Ich habe ein Hauptverzeichnis, in dem alle Dateien hinterlegt sind, diese haben z.B den Namen:
"G01 Box21 13.04.08-15.36.25" ; "G01 Box21 13.04.10-15.12.25"
"G02 Box21 13.04.08-15.42.50" ; "G02 Box21 13.04.10-15.10.02"
"G03 Box21 13.04.08-15.55.20" usw. (Gxx xxxxx Datum-Uhrzeit)
Nun möchte ich je nach Namensanfang, also G01,G02,G03 usw, die Dateien in verschiedene Ordner kopieren (Ordner und Hauptverzeichnis auf selbem Laufwerk). Diese sind schon vorab erstellt und benannt. Schwierigkeit bereitet haben mir dabei die Leerzeichen im Dateinamen...
Wenn möglich wäre es gut, die Dateien noch wie folgt unzubenennen:
Von "G01 Box21 13.04.08-15.36.25" zu z.B. "G01 VV90T 13.04.08-15.36.25", wobei nur alle mit dem selben Namensanfang gleich umbenannt werden sollen, sprich
"G02 Box21 13.04.08-15.42.50" soll hingegen zu "G02 VV120T 13.04.08-15.42.50" umbenannt werden. Dabei können die Bezeichnung wie "Box21", sowie "VV90T" variabel lang sein. Das Umbenennen wäre nur der "Feinschliff", wichtig wäre erstmal die Dateien in verschiedene Ordner zu kopieren. (Ich habe bewusst die Pfade und Namen, zu denen die Dateien umbenannt werden sollen, nicht explizit angegeben, da die Batch-Datei möglichst allgemeingültig sein soll, natürlich nur wenn das möglich ist)
Ich hoffe ich habe alle wichtigen Infos abgedeckt und bedanke mich schonmal im Voraus
MFG Nudl92
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 206282
Url: https://administrator.de/contentid/206282
Ausgedruckt am: 19.12.2024 um 14:12 Uhr
6 Kommentare
Neuester Kommentar
Hallo Nudl92 und willkommen im Forum!
Schematisch etwa so:
Durch das "
Was das Umbenennen anlangt: Du könntest eine Textdatei mit den Zuordnungen in der Form
anlegen und das dann (ungetestet) etwa so integrieren:
Voraussetzung: Der zu ersetzende Teil ("Box21") enthält keine Leerzeichen.
Anmerkung: Umbenannt werden so nur die kopierten Dateien.
Grüße
bastla
Schematisch etwa so:
for %%i in ("D:\Alter Pfad\G0? Box*.*") do for /f "tokens=1,2*" %%a in ("%%~nxi") do @echo xcopy "%%i" "D:\Neuer Pfad\%%a\"
echo
" vor dem "xcopy
" werden die Kopierbefehle (zum Testen) nur angezeigt - wenn Du es entfernst, wird wirklich kopiert, und wegen "xcopy
" muss auch der Zielordner nicht vorweg angelegt werden ...Was das Umbenennen anlangt: Du könntest eine Textdatei mit den Zuordnungen in der Form
G01 VV90T
G02 VV120T
...
for %%i in ("D:\Alter Pfad\G0? Box*.*") do for /f "tokens=1,2*" %%a in ("%%~nxi") do (
findstr /ibc:"%%a " "D:\Zuordnung.txt">nul && (
for /f "tokens=1*" %%m in ('findstr /ibc:"%%a " "D:\Zuordnung.txt"') do echo @xcopy "%%i" "D:\Neuer Pfad\%%a\%%a %%n %%c*"
) || (
echo Keine Zuordnung fuer "%%a" gefunden - "%%i" nicht kopiert!
)
)
Anmerkung: Umbenannt werden so nur die kopierten Dateien.
Grüße
bastla
Hallo
Ich habe kurz ein kleines Batch-Script geschrieben. Ich hoffe das hilft dir
Bei mir hat es funktioniert
Wende es aber nicht sofort produktiv an. Mach auch ein paar kleine Tests.
Freundliche Grüsse
jompsi
Ich habe kurz ein kleines Batch-Script geschrieben. Ich hoffe das hilft dir
::Variabeln deklarieren
Set G01_old="G01 Box21 *.txt"
Set G01_new="G01 VV90T *.txt"
Set G02_old="G02 Box21 *.txt"
Set G02_new="G02 VV120T *.txt"
Set source="C:\Temp\Test\"
Set dest1="C:\Temp\Test\Test1\"
Set dest2="C:\Temp\Test\Test2\"
::Files umbenennen
cd %source%
ren %G01_old% %G01_new%
ren %G02_old% %G02_new%
::Files kopieren
FOR %%a IN (%source%%G01_new%) DO copy "%%a" %dest1%
FOR %%a IN (%source%%G02_new%) DO copy "%%a" %dest2%
pause
Bei mir hat es funktioniert
Wende es aber nicht sofort produktiv an. Mach auch ein paar kleine Tests.
Freundliche Grüsse
jompsi