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

Zeichenketten aus 2 Dateien in eine Zeile einer Neuen schreiben

Frage Entwicklung Batch & Shell

Mitglied: jschikora

jschikora (Level 1) - Jetzt verbinden

03.03.2011 um 10:49 Uhr, 2549 Aufrufe, 7 Kommentare

Hallo Zusammen,

ich habe jetzt schon eine Weile selber mit FOR-Schleifen gebastelt, komme aber irgendwie auf keinen grünen Zweig. Vielleicht könnt ihr mir ja helfen.

Ich habe folgende Ausgangssituation. Es existieren zwei .txt-Dateien die zum Beispiel so aussehen:

test1.txt
01.
3  
02.
Kd_Am  
03.
Kd_Cs  
04.
Kd_U  
05.
time = no  
06.
5  
07.
2.87e+001 6.56e+004 2.86e-001  
08.
2.33e+001 2.03e+001 1.46e-001  
09.
2.35e+001 2.17e+005 1.22e-001  
10.
2.78e+001 5.24e+002 1.45e-001  
11.
1.47e+001 1.56e+005 2.32e-001
test2.txt
01.
8  
02.
pH 	DIC 	IS 	Al 	Ca 	Am 		Cs		U  
03.
7.12	97.22 	128.17 	7.49 	74.01	2.21e-011	4.08e-006	1.16e-013  
04.
7.93 	226.45	229.33	5.11 	63.22	3.33e-008	0.02		0.00 
05.
7.39 	180.75	212.33	1.56 	23.80	0.00   		1.36e-009	3.15e-005  
06.
7.01	255.50	182.97 	0.64 	48.82	2.21e-014  	0.00		9.88e-010  
07.
7.614 	161.72	348.16	0.38 	106.91	4.27e-007   	3.189e-013	1.77e-006 
Als Ergebnis hätte ich gerne, dass die Zahlenfolge ab Zeile 3 der test2.txt und die Zahlen ab Zeile 7 von test1.txt ausgelesen werden und jeweils in einer Zeile einer neuen Datei (z.B. gesamt.txt) zusammengefügt werden.
Die sollte dann so aussehen:

gesamt.txt
01.
7.12	97.22 	128.17 	7.49 	74.01	2.21e-011	4.08e-006	1.16e-013  2.87e+001 6.56e+004 2.86e-001 
02.
7.93 	226.45	229.33	5.11 	63.22	3.33e-008	0.02		0.00  2.33e+001 2.03e+001 1.46e-001  
03.
...
Schonmal vielen Dank im vorraus.

Johannes
Mitglied: miniversum
03.03.2011 um 12:44 Uhr
Vorausgesetzt du hast in beiden Dateien immer die Gleiche anzahl an Zahlenreihen dann würde es vom Prinzip her so gehen:
1. Auslesen wie viele Zeilen es sind -> findstr /n und zahl rausholen mit einer For schleife
2. Zeilenanzahl-2=Datensatzanzahl (Bei test2.txt)
3. Mit diesem konstrukt kannst du immer die gewünschte relevante zeile auslesen:
set "x="
FOR /F "skip=2 delims=" %i in (test2.txt) do in not defined x set x=%%i
In x steht danach die 3. Zeile (durch das skip=2)
4. Jetzt wird das ganze verschachtelt. du zählst von 1 bis anzahl der datensätze durch, nimmst diese zählvariable - 1 als wert für skip und liest mit dem obigen Beispiel die test1.txt und test2.txt aus. Die Ergebnisse hänngst du zusammen und schreibst sie in gesamt.txt
Zu beachten ist:
a. der wert für skip muss halt den offset von 2 bzw. 6 aufaddiert bekommen und
b. skip=0 geht nicht (was ja nicht vorkommen sollte
Bitte warten ..
Mitglied: jschikora
03.03.2011 um 15:06 Uhr
Also ich habe jetzt mit Hilfe deiner Tipps folgende Code-Zeilen zusammengeschrieben. Irgendwo muss ich aber noch einen Fehler haben, da ich das Ganze noch nicht zum laufen bekomme.

01.
@echo off & setlocal 
02.
set counter=0 
03.
set /p "daten=Anzahl der Datensaetze eingeben:" 
04.
 
05.
FOR %%i in (1,1,%daten%) do ( 
06.
	 
07.
	set /a a=%%i+1 
08.
	set /a b=%%i+5 
09.
 
10.
	set "x=" 
11.
	FOR /F "skip=%a% " %%j in (test2.txt) do in not defined x set x=%%j 
12.
	 
13.
	set "y=" 
14.
	FOR /F "skip=%b% " %%k in (test1.txt) do in not defined y set y=%%k 
15.
	 
16.
	echo %x% %y% >> gesamt.txt 
17.
	 
18.
	set /a counter=counter+1 
19.
	if %counter% equ %daten% goto ende 
20.
21.
 
22.
:ende 
23.
pause
Bitte warten ..
Mitglied: pieh-ejdsch
03.03.2011 um 15:08 Uhr
moin jschikora,

sofern keine Doppelpunkte am Zeilenanfang stehen könnte es so gehen.
01.
set "Datei1=D:\test1.txt" 
02.
set "Datei2=D:\test2.txt" 
03.
set "Sprung1=6" 
04.
set "Sprung2=2" 
05.
set "Ausgabe=D:\Ausgabe.txt" 
06.
 
07.
type nul>"%Ausgabe%" 
08.
for /f "tokens=1* delims=:" %%i in ('more +%Sprung1% "%Datei1%"^|findstr /n "^"') do ( 
09.
	for /f "tokens=1* delims=:" %%k in ('more +%Sprung2% "%Datei2%"^|findstr /n "^"^|findstr /b "%%i:"') do >>"%Ausgabe%" echo %%j  %%l 
10.
)
Gruß Phil
Bitte warten ..
Mitglied: jschikora
03.03.2011 um 15:29 Uhr
Moin Phil,

ich habe jetzt die beiden Dateien in einem Ordner Test auf meinem Desktop und wenn ich deinen Code als Batch-Datei ausführe erhalte ich folgenden Fehler: " Auf C:\Dokumente und Einstellungen\js5874\Desktop\Test\+ kann nicht zugegriffen werden"
Bitte warten ..
Mitglied: pieh-ejdsch
03.03.2011 um 15:39 Uhr
ups ein kleiner Schreibfehler von mir.
schau mal in die zweite Forschleife - da steht %Spung2% aber es sollte %Sprung2% heissen.

Gruß Phil
Bitte warten ..
Mitglied: jschikora
03.03.2011 um 15:47 Uhr
super... jetzt funktionierts

vielen dank
johannes
Bitte warten ..
Mitglied: miniversum
03.03.2011 um 18:28 Uhr
Jetzt mal vom drüber schauen her fällt mir folgendes auf:
- Den counter brauchst du eigentlich nicht, da die schleife sowieso aufhört wenn alle durch sind.
- Bei den beiden for schleifen zum auslesen der Dateien würde ich "skip=%a% delims=" benutzen damit die Leerzeichen nicht als trennzeichen benutzt werden
- Wenn du die eignetliche Funktion in eine Unterprozedur packst und in mit der for schleife in Zeile 5 per call aufrufst klappt das mit dem set /a, bzw. die auflösung der variabeln.
Bitte warten ..
Neuester Wissensbeitrag
Microsoft Office

MS Office Excel - Formel wird angezeigt, aber nicht berechneter Wert!

Tipp von holli.zimmi zum Thema Microsoft Office ...

Ähnliche Inhalte
Batch & Shell
gelöst Erstellungsdatum vor jede Zeile einer Textdatei schreiben (5)

Frage von freakonaleash zum Thema Batch & Shell ...

Batch & Shell
Parsen mehrer Dateien und Ausgabe je einer Zeile (1)

Frage von grka zum Thema Batch & Shell ...

Windows Server
Dateien erscheinen nicht (2)

Frage von kellbidden zum Thema Windows Server ...

Heiß diskutierte Inhalte
Hyper-V
gelöst Reiner Hyper- V Server oder lieber Rolle (19)

Frage von Winuser zum Thema Hyper-V ...

SAN, NAS, DAS
gelöst Synology Version 6.1 Probleme (17)

Frage von Hendrik2586 zum Thema SAN, NAS, DAS ...

Router & Routing
gelöst IP Kamera für drei unabhängige Netzwerke (15)

Frage von ProfessorZ zum Thema Router & Routing ...

Windows Server
gelöst Rechte als Admin vergeben - Zugriff verweigert (14)

Frage von Ghost108 zum Thema Windows Server ...