Dateien anhand einer Dateiliste kopieren
Hallo zusammen,
ich möchte mehrere in einer Textdatei enthaltenen Dateien anhand des Dateinamens in ein anderes Verzeichnis kopieren .
Folgende Batchdatei funktioniert , wenn die Dateinamen im Verzeichnis und die Namen in der Textdatei absolut identisch sind.
@echo off & setlocal
set "sourceRoot=j:\ichselber"
set "sourceList=j:\List.txt"
set "destFolder=e:\Ziel"
for /f "delims=" %%i in ('dir /a-d /b /s "%sourceRoot%\*.txt"^|findstr /ig:"%sourceList%"') do (
copy "%%~i" "%destFolder%\"
)
Jetzt haben aber die Namen in der Textdatei abgekürzte Namen.
Beispiel: der Name der Datei heisst 1234-hurra4567-89.txt
der Name in der Liste heisst hurra4567
Die Teile vor dem Bindestrich und hinter dem Bindestrich sind bei allen Dateien gleich.
Es sollen also anhand des "Mittelteils" die Dateien kopiert werden.
Ich vermute es lässt sich mit "token" und "delim" realisieren, bekomme es aber nicht hin.
Kann mir irgendwer vielleicht einen Tipp geben ?
ich möchte mehrere in einer Textdatei enthaltenen Dateien anhand des Dateinamens in ein anderes Verzeichnis kopieren .
Folgende Batchdatei funktioniert , wenn die Dateinamen im Verzeichnis und die Namen in der Textdatei absolut identisch sind.
@echo off & setlocal
set "sourceRoot=j:\ichselber"
set "sourceList=j:\List.txt"
set "destFolder=e:\Ziel"
for /f "delims=" %%i in ('dir /a-d /b /s "%sourceRoot%\*.txt"^|findstr /ig:"%sourceList%"') do (
copy "%%~i" "%destFolder%\"
)
Jetzt haben aber die Namen in der Textdatei abgekürzte Namen.
Beispiel: der Name der Datei heisst 1234-hurra4567-89.txt
der Name in der Liste heisst hurra4567
Die Teile vor dem Bindestrich und hinter dem Bindestrich sind bei allen Dateien gleich.
Es sollen also anhand des "Mittelteils" die Dateien kopiert werden.
Ich vermute es lässt sich mit "token" und "delim" realisieren, bekomme es aber nicht hin.
Kann mir irgendwer vielleicht einen Tipp geben ?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 370501
Url: https://administrator.de/forum/dateien-anhand-einer-dateiliste-kopieren-370501.html
Ausgedruckt am: 14.04.2025 um 00:04 Uhr
7 Kommentare
Neuester Kommentar
Hallo,
Teste mal folgendes:
Bei Interesse und/oder Fragen zu obigem Code kannst Du mein Tutorial zur FOR-Schleife durcharbeiten.
Grüße
Friemler
Teste mal folgendes:
@echo off & setlocal
set "sourceRoot=j:\ichselber"
set "sourceList=j:\List.txt"
set "destFolder=e:\Ziel"
for /r "%sourceRoot%" %%a in ("*.txt") do (
for /f "tokens=2 delims=-" %%b in ("%%~nxa") do (
for /f "usebackq delims=" %%c in ("%sourceList%") do (
if /i "%%b" equ "%%~c" (
copy "%%~a" "%destFolder%\" > NUL
)
)
)
)
Bei Interesse und/oder Fragen zu obigem Code kannst Du mein Tutorial zur FOR-Schleife durcharbeiten.
Grüße
Friemler
Ich habe den Code gerade getestet - funktioniert.
Was ich allerdings von Anfang an übersehen habe war, dass Du in Deinem Eröffnungsposting beim
Möglicherweise hast Du das nur getan, um vom
Grüße
Friemler
Was ich allerdings von Anfang an übersehen habe war, dass Du in Deinem Eröffnungsposting beim
DIR
-Befehl die Option /S
verwendet hattest (rekursive Verarbeitung des angegebenen Verzeichnisses und aller Unterverzeichnisse).Möglicherweise hast Du das nur getan, um vom
DIR
-Befehl vollständige Pfade zu bekommen. Ich habe jedenfalls mein Script oben nochmals abgeändert, um auch damit eine rekursive Verarbeitung der Verzeichnisstruktur zu erreichen.Grüße
Friemler