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, 2552 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 ..
Ähnliche Inhalte
Batch & Shell
gelöst Erstellungsdatum vor jede Zeile einer Textdatei schreiben (5)

Frage von freakonaleash zum Thema Batch & Shell ...

Batch & Shell
Neue Zeile verhindern (Batch)

Frage von clragon zum Thema Batch & Shell ...

Batch & Shell
Daten aus dem Feld "date sent" in den Titel schreiben (1)

Frage von ellocko94 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Google Android

Cyanogenmod alternative Downloadquelle

(5)

Tipp von Lochkartenstanzer zum Thema Google Android ...

Batch & Shell

Batch als Dienst bei Systemstart ohne Anmeldung ausführen

(5)

Tipp von tralveller zum Thema Batch & Shell ...

Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

(1)

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Heiß diskutierte Inhalte
Windows Server
gelöst Exchange HyperV Prozessorlast (19)

Frage von theoberlin zum Thema Windows Server ...

Windows Server
Server mit Netzwerkaussetzern (18)

Frage von SarekHL zum Thema Windows Server ...

LAN, WAN, Wireless
gelöst Batchdatei um einen Proxy einzustellen (14)

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

Netzwerke
Vorschlag Hotelverkabelung (14)

Frage von FA-jka zum Thema Netzwerke ...