Mehrfach-Umbenennung Dateien kopieren/verschieben

German support forum

Moderators: Hacker, Stefan2, white

ifox68
Junior Member
Junior Member
Posts: 19
Joined: 2008-04-07, 21:06 UTC

Mehrfach-Umbenennung Dateien kopieren/verschieben

Post by *ifox68 »

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
User avatar
Dalai
Power Member
Power Member
Posts: 10007
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

Gleichzeitig kopieren und umbenennen würde ich bei sowas nicht. Das gibt zuviele Fehlerquellen. In mehreren Schritten aber in jedem Fall möglich.
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.
Ich würde dabei so vorgehen:
  • 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
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
ifox68
Junior Member
Junior Member
Posts: 19
Joined: 2008-04-07, 21:06 UTC

Post by *ifox68 »

vielen Dank für die schnelle Antwort.

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.

Gruß
ifox68
User avatar
Dalai
Power Member
Power Member
Posts: 10007
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

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, 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.

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.
Dann mit Batchdatei move.cmd verschieben:

Code: Select all

@echo off
for /F "tokens=1,2" %%J IN ('move.txt') DO (move %%J\*.* %%K\*.*)
Code ungetestet!

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
ifox68
Junior Member
Junior Member
Posts: 19
Joined: 2008-04-07, 21:06 UTC

Post by *ifox68 »

Nein, die Dateien der unterschiedlichsten Verzeichnisse sollen alle in einem Verzeichnis landen.
User avatar
Dalai
Power Member
Power Member
Posts: 10007
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

ifox68 wrote:Nein, die Dateien der unterschiedlichsten Verzeichnisse sollen alle in einem Verzeichnis landen.
Na dann isses doch relativ einfach. Ich wandel die Batch von oben mal um und melde mich wieder.

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
Anleitung ähnlich wie oben:
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.
4. Dann Konsole aufmachen und rename_and_move.cmd eingeben, um das Ding zu starten.

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
User avatar
HolgerK
Power Member
Power Member
Posts: 5411
Joined: 2006-01-26, 22:15 UTC
Location: Europe, Aachen

Re: Mehrfach-Umbenennung

Post by *HolgerK »

2Dalai
ifox68 wrote:wie kann man Dateien in unterschiedlichsten Verzeichnissen in ein Verzeichnis kopieren und gleichzeitig umbenennen.
Nicht, dass das jetzt ein Missverständnis ist!

Gruß,
Holger
User avatar
Dalai
Power Member
Power Member
Posts: 10007
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Re: Mehrfach-Umbenennung

Post by *Dalai »

HolgerK wrote:2Dalai
ifox68 wrote:wie kann man Dateien in unterschiedlichsten Verzeichnissen in ein Verzeichnis kopieren und gleichzeitig umbenennen.
Nicht, dass das jetzt ein Missverständnis ist!

Gruß,
Holger
Ja, da hast du recht. Wenn er kopieren und nicht verschieben will, dann muss das move in der Batch durch ein copy ersetzt werden.

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
ifox68
Junior Member
Junior Member
Posts: 19
Joined: 2008-04-07, 21:06 UTC

Post by *ifox68 »

muss man den Code für die Datei move.txt händisch eingeben?

Gruß
ifox68
User avatar
HolgerK
Power Member
Power Member
Posts: 5411
Joined: 2006-01-26, 22:15 UTC
Location: Europe, Aachen

Re: Mehrfach-Umbenennung

Post by *HolgerK »

Dalai wrote:... Wenn er kopieren und nicht verschieben will, dann muss das move in der Batch durch ein copy ersetzt werden.
Und wenn die Originaldateien namentlich erhalten bleiben sollen, zudem das rename erst nach dem copy erfolgen!

Gruß,
Holger
User avatar
Dalai
Power Member
Power Member
Posts: 10007
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

ifox68 wrote:muss man den Code für die Datei move.txt händisch eingeben?

Gruß
ifox68
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.
HolgerK wrote:Und wenn die Originaldateien namentlich erhalten bleiben sollen, zudem das rename erst nach dem copy erfolgen!
Oder man macht's anders, in einem Schritt.

Code: Select all

copy "%%J\%%A" "%~target%\%%J.!num!" > NUL
Aber da sollte sich der OP dazu äußern, ob nur kopiert werden soll oder nicht und ob die Originale erhalten bleiben müssen.

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
ifox68
Junior Member
Junior Member
Posts: 19
Joined: 2008-04-07, 21:06 UTC

Post by *ifox68 »

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
User avatar
Dalai
Power Member
Power Member
Posts: 10007
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

ich bekomme einen Syntaxfehler bei folgendem Code:
Ich seh's mir grad an. Kann aber ne Weile dauern, weil ich wie gesagt den Code oben nicht geprüft hab.


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
Hinweis: Zielverzeichnis ohne Anführungszeichen angeben!

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
StatusQuo
Power Member
Power Member
Posts: 1524
Joined: 2007-01-17, 21:36 UTC
Location: Germany

Post by *StatusQuo »

Dalai wrote:Das dann in die Datei move.txt einfügen.
...und möglichst im ASCII- (DOS-) Zeichensatz speichern, damit auch Umlaute fehlerfrei verarbeitet werden.
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!
ifox68
Junior Member
Junior Member
Posts: 19
Joined: 2008-04-07, 21:06 UTC

Post by *ifox68 »

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
Post Reply