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

Inhalt aus zwei .txt Dateien auslesen und in eine .txt hintereinander zusammenfügen

Frage Entwicklung Batch & Shell

Mitglied: alex-w

alex-w (Level 1) - Jetzt verbinden

05.11.2007, aktualisiert 15:54 Uhr, 6450 Aufrufe, 6 Kommentare

Hallo ich will aus Datei1 eine Zeile auslesen, dann aus Datei2 dasselbe.
Diese sollen dann hintereinander in eine neue Datei geschrieben werden.

Habs so probiert:

for /f "tokens=1" %%a in (liste1.txt) do (
for /f %%b in (liste2.txt) do (echo %%b %%a)
) >>info.txt

Das tut fast das Richtige. Aber es wird für jeden Wert aus liste1.txt die Werte aus liste2.txt hinzugefügt.

Sieht dann also so aus:

wert1.liste1 wert1.liste2
wert1.liste1 wert2.liste2
wert1.liste1 wert3.liste2

wert2.liste1 wert1.liste2
wert2.liste1 wert2.liste2
wert2.liste1 wert3.liste2


Es soll aber nur Wert1 aus Liste1 nur mit Wert1 aus Liste2 verknüpft werden. usw.
Mitglied: bastla
05.11.2007 um 14:27 Uhr
Hallo alex-w und willkommen im Forum!

Versuch es mal mit folgender Vorgangsweise:
01.
@echo off & setlocal 
02.
set "L1=Z:\liste1.txt" 
03.
set "L2=Z:\liste2.txt" 
04.
set "Ziel=Z:\info.txt" 
05.
 
06.
if exist "%Ziel%" del "%Ziel%" 
07.
set /a Nr=0 
08.
for /f "usebackq tokens=1" %%a in ("%L1%") do set "Line1=%%a" & call :ProcessLine 
09.
goto :eof 
10.
 
11.
:ProcessLine 
12.
set Line2= 
13.
if %Nr% gtr 0 ( 
14.
	for /f "usebackq skip=%Nr%" %%b in ("%L2%") do if not defined Line2 set "Line2=%%b" 
15.
) else ( 
16.
	for /f "usebackq" %%b in ("%L2%") do if not defined Line2 set "Line2=%%b" 
17.
18.
echo %Line2% %Line1%>>"%Ziel%" 
19.
set /a Nr+=1
Zu jeder Zeile der ersten Liste wird durch das "skip" und die Prüfung auf "not defined" nur die korrespondierende Zeile der 2. Liste gelesen.

Etwas eleganter wäre vielleicht diese Variante:
01.
@echo off & setlocal 
02.
set "L1=Z:\liste1.txt" 
03.
set "L2=Z:\liste2.txt" 
04.
set "Ziel=Z:\info.txt" 
05.
 
06.
if exist "%Ziel%" del "%Ziel%" 
07.
set /a Nr=1 
08.
for /f "usebackq tokens=1" %%a in ("%L1%") do set "Line1=%%a" & call :ProcessLine 
09.
goto :eof 
10.
 
11.
:ProcessLine 
12.
for /f "tokens=1* delims=:" %%b in ('findstr /n . "%L2%"^|findstr /b "%Nr%:"') do set "Line2=%%c" 
13.
echo %Line2% %Line1%>>"%Ziel%" 
14.
set /a Nr+=1
Durch das erste "findstr" wird der Inhalt von "liste2" mit Zeilennummerierung angegeben und durch das zweite "findstr" nur die passende Zeile herausgefiltert.

Grüße
bastla
Bitte warten ..
Mitglied: alex-w
05.11.2007 um 14:53 Uhr
Danke für die superschnelle Antwort die zweite Variante ist in der Tat übersichtlicher und schlanker.

Getestet und funktioniert.

allerdings felhe hier ein Komma

"tokens=1,*

Besten Dank Alex
Bitte warten ..
Mitglied: bastla
05.11.2007 um 15:08 Uhr
Hallo alex-w!

allerdings felhe hier ein Komma
"tokens=1,*
... was welche Konsequenzen hätte?

Grüße
bastla
Bitte warten ..
Mitglied: alex-w
05.11.2007 um 15:26 Uhr
Schleife läuft dann nicht. Es wird einfach abgebrochen.
Bitte warten ..
Mitglied: bastla
05.11.2007 um 15:36 Uhr
Hallo alex-w!

Schleife läuft dann nicht. Es wird einfach abgebrochen.
Kann ich nicht nachvollziehen ...

Sowohl mit dem geposteten Batch als auch von der Kommandozeile (als Beispiel für Zeile 2) mit
01.
for /f "tokens=1* delims=:" %b in ('findstr /n . "liste2.txt"^|findstr /b "2:"') do @echo %c
erhalte ich das gewünschte Ergebnis - aber da Du ja für Dich eine Lösung gefunden hast, spielt's eigentlich keine Rolle mehr ...

Grüße
bastla
Bitte warten ..
Mitglied: alex-w
05.11.2007 um 15:54 Uhr
Ist ja auch egal. Trotzdem nochmal herzlichsten Dank.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Zeiten in .txt datei auslesen und Differenz berechnen (10)

Frage von meex87 zum Thema Batch & Shell ...

Batch & Shell
Maximale Größe zu verarbeitender txt-Dateien mit Batch (5)

Frage von Muck1303 zum Thema Batch & Shell ...

Microsoft Office
gelöst Inhalte vieler excel dateien auslesen und als Liste wiedergeben (13)

Frage von tw3aker zum Thema Microsoft Office ...

Batch & Shell
gelöst Inhalt einer .txt per Script bearbeiten (2)

Frage von hanni007 zum Thema Batch & Shell ...

Neue Wissensbeiträge
RedHat, CentOS, Fedora

Fedora, RedHat, Centos: DNS-Search Domain setzen

(5)

Tipp von Frank zum Thema RedHat, CentOS, Fedora ...

Drucker und Scanner

Samsung SL-M4025ND, firmware update und (kompatible) Tonerkassetten

(1)

Erfahrungsbericht von markus-1969 zum Thema Drucker und Scanner ...

Router & Routing

PfSense auf Supermicro Intel Xeon D-15x8 SoC Bare Bone

Tipp von Dobby zum Thema Router & Routing ...

Heiß diskutierte Inhalte
Windows 10
Windows für Privatanwender "nicht mehr handhabbar" (26)

Frage von FA-jka zum Thema Windows 10 ...

LAN, WAN, Wireless
Brauche Hilfe: Mit (schnellem) WLAN Strecke überbrücken (23)

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

Basic
Programmierung von Windows Programmen (10)

Frage von Ghost108 zum Thema Basic ...