Mehrfach-Umbenennung Dateien kopieren/verschieben
Moderators: Hacker, Stefan2, white
Mehrfach-Umbenennung Dateien kopieren/verschieben
Hallo,
wie kann man Dateien in unterschiedlichsten Verzeichnissen in ein Verzeichnis kopieren und gleichzeitig umbenennen.
Beispiel:
Alle Dateien vom Verzeichnis TEXTE\1020 sollen in das Verzeichnis TEXTE_NEU kopiert werden und gleichzeitig umbenannt werden in 1020.1, 1020.2, 1020.3, usw. je nachdem wie viele Dateien vorhanden sind.
Alle Dateien vom Verzeichnis TEXTE\1021 sollen in das Verzeichnis TEXTE kopiert werden und gleichzeitig umbenannt werden in 1021.1, 1021.2, 1021.3, usw. je nachdem wie viele Dateien vorhanden sind.
Gruß
ifox68
wie kann man Dateien in unterschiedlichsten Verzeichnissen in ein Verzeichnis kopieren und gleichzeitig umbenennen.
Beispiel:
Alle Dateien vom Verzeichnis TEXTE\1020 sollen in das Verzeichnis TEXTE_NEU kopiert werden und gleichzeitig umbenannt werden in 1020.1, 1020.2, 1020.3, usw. je nachdem wie viele Dateien vorhanden sind.
Alle Dateien vom Verzeichnis TEXTE\1021 sollen in das Verzeichnis TEXTE kopiert werden und gleichzeitig umbenannt werden in 1021.1, 1021.2, 1021.3, usw. je nachdem wie viele Dateien vorhanden sind.
Gruß
ifox68
Gleichzeitig kopieren und umbenennen würde ich bei sowas nicht. Das gibt zuviele Fehlerquellen. In mehreren Schritten aber in jedem Fall möglich.
Ich würde dabei so vorgehen:Alle Dateien vom Verzeichnis TEXTE\1020 sollen in das Verzeichnis TEXTE_NEU kopiert werden und gleichzeitig umbenannt werden in 1020.1, 1020.2, 1020.3, usw. je nachdem wie viele Dateien vorhanden sind.
- 1. Dateien im Verzeichnis TEXTE\1020 markieren und Strg+M drücken, um das MUT (Multi-Umbenenn-Tool) aufzurufen
2. Name löschen bei Dateimaske und durch Counter ersetzen -> Umbenennen
3. Dateien verschieben in Verzeichnis TEXTE_NEU
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64
Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64
Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
Mmh, das Umbenennen könnte man sicher automatisieren, aber wenn das Verschieben immer in ein andersnamiges Verzeichnis stattfinden soll, dann lässt sich das nicht wirklich automatisieren.ifox68 wrote:Wie könnte es automatisiert funktionieren, da es ca. 820 Verzeichnisse sind ist es ein sehr hoher Aufwand es auf diese Art und Weise durch zuführen.
Mmh, ich hätte lediglich Batchdatei(en) und/oder AutoIt als Methode der Automatisierung ein.
EDIT: Doch noch ne Idee zum Verschieben bekommen.
Datei namens move.txt anlegen mit Quell- und Zielverzeichnis:
Code: Select all
Quelle Ziel
Quelle Ziel
Quelle Ziel
usw.
Code: Select all
@echo off
for /F "tokens=1,2" %%J IN ('move.txt') DO (move %%J\*.* %%K\*.*)
MfG Dalai
Last edited by Dalai on 2008-04-07, 22:03 UTC, edited 1 time in total.
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64
Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64
Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
Na dann isses doch relativ einfach. Ich wandel die Batch von oben mal um und melde mich wieder.ifox68 wrote:Nein, die Dateien der unterschiedlichsten Verzeichnisse sollen alle in einem Verzeichnis landen.
So, ich denke, ich hab erstmal einen Anfang. Ich habe es aber nicht getestet!
Code: Select all
@echo off
setlocal ENABLEDELAYEDEXPANSION
set target=C:\verzeichnis
set num=1
for /F "tokens=*" %%J IN ('move.txt') DO (
for /F "tokens=*" %%A IN ('dir /b /ogn %%J') DO (
echo !num!
set /a num=!num!+1
echo Umbenennen
ren "%%J\%%A" "%%J\%%J.!num!" > NUL
echo Verschieben
move "%%J\%%J.!num!" "%~target%" > NUL
)
)
endlocal
1. Code als Batchdatei mit Namen deiner Wahl abspeichern, z.B. rename_and_move.cmd
2. Bei set target= das Zielverzeichnis eintragen
3. Textdatei move.txt mit Verzeichnisnamen drin erstellen, also die, die bearbeitet werden sollen:
Code: Select all
Verz1
Verz2
Verz3
usw.
EDIT: Fehler im Code behoben: bei %~target% hat ein % gefehlt.
MfG Dalai
Last edited by Dalai on 2008-04-07, 22:44 UTC, edited 1 time in total.
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64
Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64
Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
Re: Mehrfach-Umbenennung
2Dalai
Gruß,
Holger
Nicht, dass das jetzt ein Missverständnis ist!ifox68 wrote:wie kann man Dateien in unterschiedlichsten Verzeichnissen in ein Verzeichnis kopieren und gleichzeitig umbenennen.
Gruß,
Holger
Re: Mehrfach-Umbenennung
Ja, da hast du recht. Wenn er kopieren und nicht verschieben will, dann muss das move in der Batch durch ein copy ersetzt werden.HolgerK wrote:2DalaiNicht, dass das jetzt ein Missverständnis ist!ifox68 wrote:wie kann man Dateien in unterschiedlichsten Verzeichnissen in ein Verzeichnis kopieren und gleichzeitig umbenennen.
Gruß,
Holger
MfG Dalai
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64
Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64
Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
Re: Mehrfach-Umbenennung
Und wenn die Originaldateien namentlich erhalten bleiben sollen, zudem das rename erst nach dem copy erfolgen!Dalai wrote:... Wenn er kopieren und nicht verschieben will, dann muss das move in der Batch durch ein copy ersetzt werden.
Gruß,
Holger
Kann man machen, aber einfacher ist es, den TC zu nutzen. Verzeichnisse markieren und dann die Funktion cm_CopyFullNamesToClip (Namen mit komplettem Pfad kopieren) nutzen. Das dann in die Datei move.txt einfügen.ifox68 wrote:muss man den Code für die Datei move.txt händisch eingeben?
Gruß
ifox68
Oder man macht's anders, in einem Schritt.HolgerK wrote:Und wenn die Originaldateien namentlich erhalten bleiben sollen, zudem das rename erst nach dem copy erfolgen!
Code: Select all
copy "%%J\%%A" "%~target%\%%J.!num!" > NUL
MfG Dalai
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64
Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64
Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
ich bekomme einen Syntaxfehler bei folgendem Code:
@echo off
setlocal ENABLEDELAYEDEXPANSION
set target=C:\verzeichnis
set num=1
for /F "tokens=*" %%J IN ('move.txt') DO (
for /F "tokens=*" %%A IN ('dir /b /ogn %%J') DO (
echo !num!
set /a num=!num!+1
echo Umbenennen
ren "%%J\%%A" "%%J\%%J.!num!" > NUL
echo Verschieben
move "%%J\%%J.!num!" "%~target\" > NUL
)
)
endlocal
Gruß
ifox68
@echo off
setlocal ENABLEDELAYEDEXPANSION
set target=C:\verzeichnis
set num=1
for /F "tokens=*" %%J IN ('move.txt') DO (
for /F "tokens=*" %%A IN ('dir /b /ogn %%J') DO (
echo !num!
set /a num=!num!+1
echo Umbenennen
ren "%%J\%%A" "%%J\%%J.!num!" > NUL
echo Verschieben
move "%%J\%%J.!num!" "%~target\" > NUL
)
)
endlocal
Gruß
ifox68
Ich seh's mir grad an. Kann aber ne Weile dauern, weil ich wie gesagt den Code oben nicht geprüft hab.ich bekomme einen Syntaxfehler bei folgendem Code:
So, hier ein funktionierender Code:
Code: Select all
@echo off
setlocal ENABLEDELAYEDEXPANSION
set target=C:\ziel
set num=1
if not exist %target% md %target% > NUL
for /F "tokens=*" %%J IN (move.txt) DO (
for /F "tokens=*" %%A IN ('dir /b /a-d /ogn %%J') DO (
echo.
echo !num!
echo Umbenennen
ren "%%J\%%A" "%%~nxJ.!num!" > NUL
echo Verschieben
move "%%J\%%~nxJ.!num!" "%target%\" > NUL
set /a num=!num!+1
)
)
endlocal
MfG Dalai
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64
Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64
Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
...und möglichst im ASCII- (DOS-) Zeichensatz speichern, damit auch Umlaute fehlerfrei verarbeitet werden.Dalai wrote:Das dann in die Datei move.txt einfügen.
Bei Bedarf kann ich das Standardgerüst drumherum bauen, mit dem die Dateiliste auch im Windows-Zeichensatz verarbeitet wird.
Who the hell is General Failure, and why is he reading my disk?
-- TC starter menu: Fast yet descriptive command access!
-- TC starter menu: Fast yet descriptive command access!
irgend etwas läuft schief. die Dateien werden in das richtige Verzeichnis verschoben, aber diese lauten z.B. .1, .10, etc.
Der Dateiname muss vor dem Punkt den Namen des Verzeichnisses haben und nach dem Punkt müssen die Dateien durchnummeriert werden mit der Anzahl der Dateien die sich im Verzeichnis befinden.
D.h.
Im Verzeichnis 1020 befinden sich folgende Dateien:
brief1.txt, brief2.txt, brief3.txt
Rauskommen muss im anderen Verzeichnis 1020.1, 1020.2, 1020.3
Gruß
ifox68
Der Dateiname muss vor dem Punkt den Namen des Verzeichnisses haben und nach dem Punkt müssen die Dateien durchnummeriert werden mit der Anzahl der Dateien die sich im Verzeichnis befinden.
D.h.
Im Verzeichnis 1020 befinden sich folgende Dateien:
brief1.txt, brief2.txt, brief3.txt
Rauskommen muss im anderen Verzeichnis 1020.1, 1020.2, 1020.3
Gruß
ifox68