Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Batch - TXT-Datei zeilenweise auslesen - und - eine Datei entsprechend umbenennen und kopieren

Frage Entwicklung Batch & Shell

Mitglied: Stargrove

Stargrove (Level 1) - Jetzt verbinden

08.10.2010, aktualisiert 17:14 Uhr, 9594 Aufrufe, 2 Kommentare

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

http://www.administrator.de/index.php?content=19980

- - - - - Das habe ich daraus zusammengebastelt.
- - - - - Ist aber noch nicht das Gelbe vom Ei, es fehlt das Ende für die Schleife.
01.
  
02.
	set /a "n=1" 
03.
	:start 
04.
	:: n-te Zeile in %var% speichern; n ist im Beispiel 3 
05.
	Set /a "cnt=1" 
06.
	rem Set /a "n=3" 
07.
	for /F "Tokens=*" %%i in (list.txt) do call :setvarFixLine %n% "%%i"  
08.
	Echo n-te Zeile, n=%n%: [%Var%] 
09.
	copy Bild.jpg neu\"%var%.jpg" 
10.
	set /a "n=n+1" 
11.
	goto :start 
12.
 
13.
	:setvarFixLine 
14.
	If %cnt%==%1 Set "Var=%~2" 
15.
	Set /a "cnt+=1"  
16.
	goto :eof
Mitglied: bastla
08.10.2010 um 17:33 Uhr
Hallo Stargrove und willkommen im Forum!

Versuch es damit:
01.
@echo off & setlocal 
02.
set "Datei=D:\bild.jpg" 
03.
set "Liste=D:\Liste.txt" 
04.
set "Ziel=D:\Neu" 
05.
 
06.
chcp 1252 >nul 
07.
md "%Ziel%" 2>nul 
08.
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 ...
Bitte warten ..
Mitglied: Stargrove
10.10.2010 um 12:21 Uhr
Hallo bastla,

es läuft PERFEKT!
Toll, dass Du auch eine Beschreibung der Befehle angegeben hat.

Vielen Dank und einen schönen Sonntag.

Beste Grüße
Stargrove
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Batch: Textdatei Zeilenweise auslesen (2)

Frage von CreatorX zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch Datei: PDF Dateien verschieben, umbenennen und löschen (4)

Frage von F0rcehunter zum Thema Batch & Shell ...

Batch & Shell
Per Batch eine XLS-Datei in eine TXT-Datei umwandeln (5)

Frage von skiing69 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Windows Server

Umstellung SHA 1 auf SHA 2 - Migration der CA von CSP auf KSP

Tipp von Badger zum Thema Windows Server ...

Windows 10

Quato DTP94 unter Windows 10 x64 installieren und verwenden

Anleitung von anteNope zum Thema Windows 10 ...

Windows 10

Win10 1703 und Nutzerkennwörter bei Ersteinrichtung - erstaunliche Erkenntnis

(15)

Erfahrungsbericht von DerWoWusste zum Thema Windows 10 ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
CNC Maschinen verlieren Netzwerkverbindung (kurioser Fehler) (22)

Frage von NoHopeNoFear zum Thema LAN, WAN, Wireless ...

Webentwicklung
Aktuellen Mitarbeiter auf Homepage anzeigen (13)

Frage von alemanne21 zum Thema Webentwicklung ...

Windows Server
gelöst Parameter Übergabe Terminal Server (9)

Frage von ThomasKern zum Thema Windows Server ...

Batch & Shell
Anfängerfragen - Powershell - Mailboxvertretung im Pulk einrichten (8)

Frage von Yoshimitsu zum Thema Batch & Shell ...