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, 2546 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
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

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

Frage von grka zum Thema Batch & Shell ...

Batch & Shell
gelöst 2 große TXT Dateien vergleichen und Unterschiede in andere Datei schreiben (6)

Frage von sid.pdm zum Thema Batch & Shell ...

VB for Applications
gelöst Einzelne Dateien in Dateiliste umbenennen durch neuen Wert (Namen) aus einer Zelle (2)

Frage von two-ak-two zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (17)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

DSL, VDSL
DSL-Signal bewerten (14)

Frage von SarekHL zum Thema DSL, VDSL ...