Batch - TXT-Datei zeilenweise auslesen - und - eine Datei entsprechend umbenennen und kopieren
Da ich ein absoluter Laie auf diesem Gebiet bin, hoffe ich auf eure Hilfe und bin für eine Lösung sehr dankbar
Meine Versuche sollen nur zur Verdeutlichung dienen und müssen nicht übernommen werden.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - Zur Vereinfachung nehme ich folgendes Beispiel:
Datei = bild.jpg (oder test.xls, oder wichtig.doc …)
Liste = liste.txt
- - - - - Inhalt der Liste (ändert sich häufig und ist auch länger)
Frank Maurer
Peter Müller
Für unseren lieben Fritz
- - - - - Ich möchte, dass die Datei (in einen existierenden Ordner) kopiert
- - - - - und
- - - - - nach der Liste umbenannt wird (für jede Zeile ein Dateiname mit gleichem Inhalt).
- - - - - Es soll am Ende so aussehen
Frank Maurer.jpg
Peter Müller.jpg
Für unseren lieben Fritz.jpg
- - - - - Habe es so versucht:
FOR /f %%f IN (liste.txt) DO copy bild.jpg neu\%%f
1. Problem - es wird nur das erste Wort pro Zeile benutzt (Problem Leerzeichen).
2. Problem - die Endung fehlt (.jpg).
3. Problem - aus den Umlauten werden wirre Zeichen.
- - - - - Hier habe ich einen guten Ansatz / Lösung gefunden
EINE Zeile aus TXT-Datei auslesen
- - - - - Das habe ich daraus zusammengebastelt.
- - - - - Ist aber noch nicht das Gelbe vom Ei, es fehlt das Ende für die Schleife.
Meine Versuche sollen nur zur Verdeutlichung dienen und müssen nicht übernommen werden.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - Zur Vereinfachung nehme ich folgendes Beispiel:
Datei = bild.jpg (oder test.xls, oder wichtig.doc …)
Liste = liste.txt
- - - - - Inhalt der Liste (ändert sich häufig und ist auch länger)
Frank Maurer
Peter Müller
Für unseren lieben Fritz
- - - - - Ich möchte, dass die Datei (in einen existierenden Ordner) kopiert
- - - - - und
- - - - - nach der Liste umbenannt wird (für jede Zeile ein Dateiname mit gleichem Inhalt).
- - - - - Es soll am Ende so aussehen
Frank Maurer.jpg
Peter Müller.jpg
Für unseren lieben Fritz.jpg
- - - - - Habe es so versucht:
FOR /f %%f IN (liste.txt) DO copy bild.jpg neu\%%f
1. Problem - es wird nur das erste Wort pro Zeile benutzt (Problem Leerzeichen).
2. Problem - die Endung fehlt (.jpg).
3. Problem - aus den Umlauten werden wirre Zeichen.
- - - - - Hier habe ich einen guten Ansatz / Lösung gefunden
EINE Zeile aus TXT-Datei auslesen
- - - - - Das habe ich daraus zusammengebastelt.
- - - - - Ist aber noch nicht das Gelbe vom Ei, es fehlt das Ende für die Schleife.
set /a "n=1"
:start
:: n-te Zeile in %var% speichern; n ist im Beispiel 3
Set /a "cnt=1"
rem Set /a "n=3"
for /F "Tokens=*" %%i in (list.txt) do call :setvarFixLine %n% "%%i"
Echo n-te Zeile, n=%n%: [%Var%]
copy Bild.jpg neu\"%var%.jpg"
set /a "n=n+1"
goto :start
:setvarFixLine
If %cnt%==%1 Set "Var=%~2"
Set /a "cnt+=1"
goto :eof
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 152656
Url: https://administrator.de/forum/batch-txt-datei-zeilenweise-auslesen-und-eine-datei-entsprechend-umbenennen-und-kopieren-152656.html
Ausgedruckt am: 04.05.2025 um 12:05 Uhr
2 Kommentare
Neuester Kommentar
Hallo Stargrove und willkommen im Forum!
Versuch es damit:
Grüße
bastla
P.S.: Auch ein kurzer Gruß Deinerseits käme (vermutlich nicht nur in diesem Forum) gut an ...
Versuch es damit:
@echo off & setlocal
set "Datei=D:\bild.jpg"
set "Liste=D:\Liste.txt"
set "Ziel=D:\Neu"
chcp 1252 >nul
md "%Ziel%" 2>nul
for /f "usebackq delims=" %%i in ("%Liste%") do copy "%Datei%" "%Ziel%\%%i.*" >nul
- "
chcp 1252
" wechselt auf eine für die Umlaute passende "Codepage". - Auch wenn der Ordner schon existiert, ist die Zeile 7 nur überflüssig, schadet aber nicht.
- "
usebackq
" erlaubt es, zur Sicherheit den Pfad der Listendatei unter Anfühurngszeichen zu setzen (für den Fall, dass dieser Leerzeichen enthielte). - "
delims=
" verhindert das "Zerreißen" aufgrund der (Default-Trennzeichen) Leerzeichen, indem es festlegt, dass es kein Trennzeichen gibt und daher die gesamte Zeile als "%%i
" zur Verfügung stehen soll. - Der Zusatz "
.*
" sorgt dafür, dass die kopierte Datei den Dateityp der Quelldatei behält.
Grüße
bastla
P.S.: Auch ein kurzer Gruß Deinerseits käme (vermutlich nicht nur in diesem Forum) gut an ...