Top-Themen

Aktuelle Themen (A bis Z)

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 Mehrere TXT-Files Zeilenweise auslesen, zusammensetzen und in CSV datei schreiben

Mitglied: Landstreicher

Landstreicher (Level 1) - Jetzt verbinden

09.11.2011, aktualisiert 18.10.2012, 5564 Aufrufe, 23 Kommentare

Hallo,

Vorweg .. ich habe leider keine passende Lösung im Forum gefunden!

Also ich möchte gern mittels Batch mehrere TXT Files Zeilenweise auslesen welche so aussehen:

11/09/2011 00:00 2
11/09/2011 00:10 1
11/09/2011 00:20 4
11/09/2011 00:30 3
11/09/2011 00:40 2
11/09/2011 00:50 1
11/09/2011 01:00 2
11/09/2011 01:10 9
11/09/2011 01:20 1
11/09/2011 01:30 1
11/09/2011 01:40 0
11/09/2011 01:50 0
11/09/2011 02:00 2
11/09/2011 02:10 2
11/09/2011 02:20 1

11/09/2011 00:00 10
11/09/2011 00:10 15
11/09/2011 00:20 9
11/09/2011 00:30 13
11/09/2011 00:40 5
11/09/2011 00:50 4
11/09/2011 01:00 10
11/09/2011 01:10 9
11/09/2011 01:20 7
11/09/2011 01:30 10
11/09/2011 01:40 13
11/09/2011 01:50 12
11/09/2011 02:00 8
11/09/2011 02:10 6
11/09/2011 02:20 7

So kann ich zwar den Wert den ich brauche auslesen, aber nicht in dem Format schreiben, welches ich benötige
for /F "tokens=1-10 delims=<> " %%i in (D:\Charts\quelle\Datei1) do echo %%l
for /F "tokens=1-10 delims=<> " %%i in (D:\Charts\quelle\Datei2) do echo %%l
for /F "tokens=1-10 delims=<> " %%i in (D:\Charts\quelle\Datei3) do echo %%l
for /F "tokens=1-10 delims=<> " %%i in (D:\Charts\quelle\datei4) do echo %%l
for /F "tokens=1-10 delims=<> " %%i in (D:\Charts\quelle\datei5) do echo %%l
for /F "tokens=1-10 delims=<> " %%i in (D:\Charts\quelle\datei6) do echo %%l

diese ausgelesenen Werte, die nun aus verschiedenen TXT - Files kommen, will ich pro Uhrzeit in eine Zeile in einer CSV Datei schreiben. bsp:
(an erster Stelle hinter der Uhrzeit steht der Wert der ersten Datei, dann die zweite Datei, ect ...
19.10.2011 00:00;2;10;2;3;0;1;7;1;3;
19.10.2011 00:10;1;15;2;5;1;0;9;2;11;
19.10.2011 00:20;4;9;0;2;1;2;2;11;5;
19.10.2011 00:30;3;13;1;0;0;1;57;8;15;
19.10.2011 00:40;2;5;0;1;2;1;2;1;1;
19.10.2011 00:50;1;4;0;0;1;4;17;2;2;
19.10.2011 01:00;2;10;1;7;1;1;8;1;1;
19.10.2011 01:10;9;9;0;0;0;1;1;2;2;
19.10.2011 01:20;1;7;0;3;1;0;4;1;9;
19.10.2011 01:30;1;10;0;2;0;0;1;5;2;
19.10.2011 01:40;0;13;0;0;1;0;1;1;1;
19.10.2011 01:50;0;12;2;0;2;0;4;6;2;
19.10.2011 02:00;2;8;0;1;0;2;1;2;3;
19.10.2011 02:10;2;6;0;1;0;1;1;1;1;
19.10.2011 02:20;1;7;1;3;1;1;1;7;1;

Irgendwie bekomme ich es nicht hin, das er die Werte dementsprechend ausliest und sie richtig in die CSV - Datei schreibt.
jemand eine Idee ?

gruß Landstreicher
Mitglied: Jochem
09.11.2011 um 14:59 Uhr
Moin,

nach dem ersten Drübergucken: Kann so nicht funktionieren!

11/09/2011 00:00 2

for /F "tokens=1-10 delims=<> " %%i in (D:\Charts\quelle\Datei1) do echo %%l

- Wo sind da 10 tokens?
- wo sind in der Eingabedatei die Delimiter <> ?
- wieso wird nur %%l ausgegeben?
- wo soll den das Ergebnis von "do echo %%l" hingeschrieben werden?
- wo bleibt beim "echo" der Trenner "," der zu erzeugenden CSV-Datei?
- was soll mit der CSV-Datei weiter passieren (Import nach Excel?)?

Vorschlag:
- lies Dir nochmal den Hilfetext zum "FOR-Befehl" durch und ändere danach Dein Script.
- bau Dir aus den n Ausgangsdateien entsprechende CSV-Dateien
- Importiere diese dann der Reihe nach in eine Excel-Datei mit n Tabellenblättern
- Erstelle dann ein Summenblatt mit den Angaben aus Tabelle-1 bis Tabelle-n
- Zur Not kannst Du dieses Summenbaltt als CSV-Datei exportieren

Alternative:
Du kannst mal austesten, inwieweit sich der FOR-Befehl verschachteln läßt, so daß nach dem Abarbeiten der ersten Datei aus den Folgedateien nur noch der benötigte Wert ausgelesen und weiterverarbeitet wird.

Gruß J chem
Bitte warten ..
Mitglied: Jochem
09.11.2011 um 15:00 Uhr
Sorry, Doppelpost .
Bitte warten ..
Mitglied: Landstreicher
09.11.2011 um 15:30 Uhr
Naja, ich bitte ja hier um "Hilfe" und nicht um "helfe dir selbst"

Hätte ich den Nerv und die Zeit sowie das Verständnis, würde ich mir die Hilfe bis in den entlegensten Winkel durchlesen, leider ist dem nicht so.
Ich kann mir gut vorstellen, das es nur ein Einzeiler ist der hier zur Lösung meines Problems führen könnte.

also, kannst du mir dabei helfen ? ;)
Bitte warten ..
Mitglied: Jochem
09.11.2011 um 16:04 Uhr
Moin,

Hätte ich den Nerv und die Zeit sowie das Verständnis....

Tja, am Verständnis kann man was tun: Lesen bildet, hatte ich ja schon vorgeschlagen.

Zu den anderen beiden Punkten: Du hast weder Nerv noch Zeit, aber ich soll Zeit und Nerven einbringen, um Dir eine mundgerechte Lösung (evtl. Einzeiler) zu liefern, die Du nur noch "schlucken" mußt? Nicht wirklich, oder?

Für mich daher hier EOD.

Gruß J chem
Bitte warten ..
Mitglied: 60730
09.11.2011, aktualisiert 18.10.2012
Moinsen,

Zitat von Landstreicher:
Naja, ich bitte ja hier um "Hilfe" und nicht um "helfe dir selbst"

naja - aber ganz ehrlich sowas findet man aber wirklich relativ schnell und vielleicht fällt dir auf den ersten Blick was auf.
Mal ganz unten, die letzte Zeile studieren

Gruß
Bitte warten ..
Mitglied: pieh-ejdsch
10.11.2011 um 17:11 Uhr
moin,

als CMD-OneLiner geht es vllt so
01.
>nul 3>"D:\Neue.CSV" (for /f usebackqtokens^=1-3 %i in ("D:\Datei A.txt") do (set "line=" & for %a in ("D:\Datei B.txt" "C:\Datei C.txt") do for /f tokens^=3 %m in (' findstr /b /c:"%i %j" %a ') do if defined Line (call set "Line=%Line%;%m") else set "line=;%m" )&& >&3 call echo %i %j;%k%Line%)&set "line="
Gruß Phil
Bitte warten ..
Mitglied: Landstreicher
11.11.2011 um 11:41 Uhr
danke erstmal Phil, aber sorry, ich komm damit echt nicht klar


also ich hab das jetzt noch mal etwas geändert ...

for /F "tokens=1-4" %%a in (D:\Charts\quelle\CPU_Q4DE8NCOJ23_20111109) do echo DKS >>D:\test.csv
for /F "tokens=1-4" %%a in (D:\Charts\quelle\CPU_Q4DE8NCOJ23_20111109) do echo ;%%b %%c>>D:\test.csv
for /F "tokens=1-4" %%a in (D:\Charts\quelle\CPU_Q4DE8NCOJ23_20111109) do echo ;;%%d>>D:\test.csv
for /F "tokens=1-4" %%a in (D:\Charts\quelle\CPU_Q4DE8NCOJ24_20111109) do echo ;;;%%d;>>D:\test.csv

soweit schreibt er zwar alles in eine Datei, nur eben untereinander anstatt das ausgelesen von der 2ten Datei dahinter zu schreiben ...

eigentlich brauche ich ja nur ne Lösung, wie ich alle folgedaten dahinter statt drunter bekomme

PS: ja ich bin kein Profi , nennt mich noob

mfg
Bitte warten ..
Mitglied: Landstreicher
11.11.2011, aktualisiert 18.10.2012
Zitat von 60730:
Moinsen,

> Zitat von Landstreicher:
> ----
> Naja, ich bitte ja hier um "Hilfe" und nicht um "helfe dir selbst"

naja - aber ganz ehrlich sowas findet man aber wirklich relativ
schnell und vielleicht fällt dir auf den ersten Blick was auf.
Mal ganz unten, die letzte Zeile studieren

Gruß

wenn du dich auf "Problem gelöst" und keine Lösung geschrieben beziehen solltest? ....
sprich es ruhig aus .. ich hatte so meine Gründe.
Bitte warten ..
Mitglied: Landstreicher
11.11.2011 um 12:25 Uhr
Zitat von Jochem:
Moin,

> Hätte ich den Nerv und die Zeit sowie das Verständnis....

Tja, am Verständnis kann man was tun: Lesen bildet, hatte ich ja schon vorgeschlagen.

Zu den anderen beiden Punkten: Du hast weder Nerv noch Zeit, aber ich soll Zeit und Nerven einbringen, um Dir eine mundgerechte
Lösung (evtl. Einzeiler) zu liefern, die Du nur noch "schlucken" mußt? Nicht wirklich, oder?

Für mich daher hier EOD.

Gruß J chem

zu deinen beiden Punkten
a) kurz, ich verstehe es nicht .
b) doch, ich dachte das ist ein Forum in dem man hilfe bekommt und nicht die "hilfe" zur hilfe

was deine Vorschläge angeht, so habe ich alle durch und sie haben mir leider in diesem Fall nichts gebracht.
In excel dateien einlesen ect. kein ding, da sich aber der Dateinamen (datum) täglich ändert und ich die Quelldateien so belassen muss und ich auch hier nicht weiss wie ich das dort am besten einbaue, komme ich auch mit excel nicht weiter.

mfg Landstreicher
Bitte warten ..
Mitglied: pieh-ejdsch
11.11.2011 um 14:16 Uhr
moin Landstreicher,

in dem Einzeiler sind Dateinamen: "D:\Neue.CSV"; "D:\Datei A.txt"; "D:\Datei B.txt"; "C:\Datei C.txt"

Die csv steht für die Ausgabedatei.
Die txt der 1.ForSchleife gibt die Zeilenanfänge vor (11/09/2011 00:00).
In der 2. ForSchleife stehen die restlichen txt-Files, welche der dritten Forschleife zum herausfummeln der Werte übergeben werden. Die Variable Line wird mit dem call mit ihrem eigenen Wert und dem jeweilig hinzuzufügenden Herausgefummelten Wert ergänzt. Wenn alle Dateien der zweiten FOR durch sind wird die Variable Line mit dem call echo ausgegeben und wird ins dritte Handle geschrieben, welches in die CSV geschrieben wird. Dann gehts mit der nächsten Zeile der TXT der 1.FOR weiter. usw..

um dies in eine Batch zu Übertragen/aufzudröseln musst Du alle Prozentzeichen (dieses Onliners) Verdoppeln.

Gruß Phil
Bitte warten ..
Mitglied: pieh-ejdsch
11.11.2011 um 22:35 Uhr
Ohne die Call, Sub oder delayedexpansion sähe das ganze in etwa so aus.

01.
@echo off &setlocal
02.

03.
set inDatei1="D:\Datei1.txt"
04.
set inDateiNext="D:\Datei2.txt" "D:\Datei3.txt" "D:\Datei4.txt"
05.
set Output=3^>"D:\Output.csv"
06.

07.
%Output% >nul <nul (
08.
	for /f usebackqtokens^=1-3 %i in (%inDatei1%) do (
09.
		 >&3 set/p="%i %j;%k"
10.
		for %a in (%inDateiNext%) do for /f tokens^=3 %m in (' findstr /b /c:"%i %j" %a ') do >&3 set/p=";%m"
11.
		 >&3 echo(
12.
)	)
Gruß Phil
Bitte warten ..
Mitglied: Landstreicher
14.11.2011 um 12:29 Uhr
Hi,

danke erstmal .. habs auch gleich mal getestet. Leider meckert er hier das erste "do" an:
do for /f tokens^=3 %m in (' findstr /b /c:"%i %j" %a ') do >&3 set/p=";%m"

..."do" ist syntaktisch an dieser Stelle nicht verarbeitbar.

ne idee was falsch ist ?
Bitte warten ..
Mitglied: bastla
16.11.2011 um 20:23 Uhr
Hallo Landstreicher!

Da das ja ein Batch sein soll, müssen alle Laufvariablen (also zB "%i") mit zwei Prozentzeichen geschrieben werden ...
Eine etwas flexiblere Variante sähe übrigens etwa so aus:
01.
@echo off &setlocal
02.
set "Ordner=D:\"
03.
set "inDatei=Datei*.txt" & set "inDatei1="
04.
set Output=3^>"Output.csv"
05.

06.
pushd "%Ordner%"
07.
del "%Output%" 2>nul
08.
for /f "delims=" %%i in ('dir /b /on "%inDatei%"') do if not defined inDatei1 set "inDatei1=%%i"
09.
if not defined inDatei1 echo Keine passende Datei gefunden! & goto :eof
10.

11.
%Output% >nul <nul (
12.
	for /f usebackqtokens^=1-3 %%i in (%inDatei1%) do (
13.
		 >&3 set/p="%%i %%j;%%k"
14.
		for /f "skip=1 delims=" %%a in ('dir /b /on "%inDatei%"') do for /f tokens^=3 %%m in (' findstr /b /c:"%%i %%j" %%a ') do >&3 set/p=";%%m"
15.
		 >&3 echo(
16.
)	)
17.
popd
Hier genügt es, den Ordner und die Dateimaske anzugeben ...

Grüße
bastla
Bitte warten ..
Mitglied: Landstreicher
17.11.2011 um 13:44 Uhr
Hallo Bastla,

danke erstmal.

folgene Probleme hab ich noch.

1) er liesst mir leider nur eine Datei aus (die erste) und nicht alle Dateien die in dem Ordner liegen. bzw. schreibt diese in die Output-Datei.
so findet er bsp: (echo on)

D:\Charts\quelle>for /F "delims=" %i in ('dir /b /on "CPU_Q4DE8NCO*"') do if not defined inDatei1 set "inDatei1=%i"

D:\Charts\quelle>if not defined inDatei1 set "inDatei1=CPU_Q4DE8NCOJ23_20111109"

D:\Charts\quelle>if not defined inDatei1 set "inDatei1=CPU_Q4DE8NCOJ24_20111109"

D:\Charts\quelle>if not defined inDatei1 set "inDatei1=CPU_Q4DE8NCOJ25_20111109"

D:\Charts\quelle>if not defined inDatei1 set "inDatei1=CPU_Q4DE8NCOJ26_20111109"

D:\Charts\quelle>if not defined inDatei1 set "inDatei1=CPU_Q4DE8NCOJ27_20111109"

D:\Charts\quelle>if not defined inDatei1 set "inDatei1=CPU_Q4DE8NCOJ28_20111109"

D:\Charts\quelle>if not defined inDatei1 set "inDatei1=CPU_Q4DE8NCOU29_20111109"

D:\Charts\quelle>if not defined inDatei1 set "inDatei1=CPU_Q4DE8NCOU30_20111109"

D:\Charts\quelle>if not defined inDatei1 set "inDatei1=CPU_Q4DE8NCOU31_20111109"

D:\Charts\quelle>if not defined inDatei1 echo Keine passende Datei gefunden! & goto :eof

D:\Charts\quelle>(for /F usebackqtokens=1-4 %i in (CPU_Q4DE8NCOJ23_20111109) do (
set/p=";%j %k;%l" 1>&3
for /F "skip=1 delims=" %a in ('dir /b /on "CPU_Q4DE8NCO*"') do for /F tokens=3 %m in (' findstr /b /c:"%i %j" %a ') do set/p="
echo( 1>&3
) ) 3>aktuell_win.csv 1>nul 0<nul


2) in die erste Zeile der CSV-Datei muss rein
SID;Datum/Zeit;Q4DE8NCOJ23;Q4DE8NCOJ24;Q4DE8NCOJ25;Q4DE8NCOJ26;Q4DE8NCOJ27;Q4DE8NCOJ28;Q4DE8NCOU29;Q4DE8NCOU30;Q4DE8NCOU31;
.. und in der ersten Spalte dann unter SID, "ABC"


das "ENDPRODUKT" sollte dann so aussehen:

SID;Datum/Zeit;Q4DE8NCOJ23;Q4DE8NCOJ24;Q4DE8NCOJ25;Q4DE8NCOJ26;Q4DE8NCOJ27;Q4DE8NCOJ28;Q4DE8NCOU29;Q4DE8NCOU30;Q4DE8NCOU31
ABC;19.10.2011 00:00;6;10;2;3;0;1;7;1;3
ABC;19.10.2011 00:10;3;15;2;5;1;0;9;2;11
ABC;19.10.2011 00:20;1;9;0;2;1;2;2;11;5
ABC;19.10.2011 00:30;1;13;1;0;0;1;57;8;15
ABC;19.10.2011 00:40;0;5;0;1;2;1;2;1;1
ABC;19.10.2011 00:50;2;4;0;0;1;4;17;2;2
ABC;19.10.2011 01:00;2;10;1;7;1;1;8;1;1
ABC;19.10.2011 01:10;3;9;0;0;0;1;1;2;2
ABC;19.10.2011 01:20;0;7;0;3;1;0;4;1;9
ABC;19.10.2011 01:30;2;10;0;2;0;0;1;5;2
ABC;19.10.2011 01:40;0;13;0;0;1;0;1;1;1
ABC;19.10.2011 01:50;1;12;2;0;2;0;4;6;2
ABC;19.10.2011 02:00;2;8;0;1;0;2;1;2;3
ABC;19.10.2011 02:10;1;6;0;1;0;1;1;1;1
ABC;19.10.2011 02:20;0;7;1;3;1;1;1;7;1
ABC;19.10.2011 02:30;4;15;1;0;0;6;1;1;3
ABC;19.10.2011 02:40;5;9;0;2;0;0;3;11;2
ABC;19.10.2011 02:50;4;12;1;1;3;0;1;2;1
ABC;19.10.2011 03:00;3;7;0;0;0;1;18;3;33
ABC;19.10.2011 03:10;3;6;1;1;1;0;19;3;5
ABC;19.10.2011 03:20;3;10;0;1;0;0;3;2;1
ABC;19.10.2011 03:30;2;13;1;3;0;0;5;1;1
ABC;19.10.2011 03:40;0;4;0;1;0;0;11;1;1
ABC;19.10.2011 03:50;3;8;0;0;2;5;4;1;1
ABC;19.10.2011 04:00;2;4;0;1;0;2;1;7;1
ABC;19.10.2011 04:10;5;5;1;1;0;2;2;1;3
Bitte warten ..
Mitglied: 60730
17.11.2011 um 14:50 Uhr
moin,

er liesst mir leider nur eine Datei aus (die erste) und nicht alle Dateien die in dem Ordner liegen
 for /F "delims=" %i in ('dir /b /on "CPU_Q4DE8NCO*"') do if not defined inDatei1 set "inDatei1=%i"
Was will uns diese Zeilenkombination sagen? do if not defined?
Das Hilfe zur selbsthilfe auch etwas eigeninitiative voraussetzt?

Denk mal drüber nach, ist ganz einfach - du hast 2 Alternativen, wie du aus der Nummer herauskommst.

Gruß
Bitte warten ..
Mitglied: bastla
17.11.2011 um 14:59 Uhr
Hallo Landstreicher!

Da bei Deinem Test sowohl der Batch, als auch die Struktur der Datendateien (ist "ABC" im Ergebnis eigentlich eine Konstante?) verändert waren, solltest Du für beide den derzeitigen Stand posten ...

Übrigens sollte es Dich nicht wundern, dass
 for /F "skip=1 delims=" %a in ('dir /b /on "CPU_Q4DE8NCO*"') do for /F tokens=3 %m in (' findstr /b /c:"%i %j" %a ') do set/p="
keine Ausgabe der Werte aus den übrigen Dateien erzeugt ...

Grüße
bastla
Bitte warten ..
Mitglied: Landstreicher
18.11.2011 um 09:56 Uhr
Moin Bastla,

sorry hab wohl etwas verwirrung gestiftet ...

also ich fasse mal die Änderungen zusammen.

die Quelldateien liegen im Ordner
D:\Charts\quelle
und heissen CPU_Q4DE8NCOj23_(jeweiliges DaTUM) ohne .txt bsp:CPU_Q4DE8NCOJ23_20111118
CPU_Q4DE8NCOj24_(jeweiliges DaTUM)
CPU_Q4DE8NCOj25_(jeweiliges DaTUM)
CPU_Q4DE8NCOj26_(jeweiliges DaTUM)
CPU_Q4DE8NCOj27_(jeweiliges DaTUM)
CPU_Q4DE8NCOj28_(jeweiliges DaTUM)
CPU_Q4DE8NCOU29_(jeweiliges DaTUM)
CPU_Q4DE8NCOU30_(jeweiliges DaTUM)
CPU_Q4DE8NCOU31_(jeweiliges DaTUM)

und sehen jeweils so aus:
Servername Datum Uhrzeit CPU-Wert(Auslastung)
Q4DE8NCOJ23 11/09/2011 00:00 2
Q4DE8NCOJ23 11/09/2011 00:10 1
Q4DE8NCOJ23 11/09/2011 00:20 4
Q4DE8NCOJ23 11/09/2011 00:30 3
Q4DE8NCOJ23 11/09/2011 00:40 2
Q4DE8NCOJ23 11/09/2011 00:50 1
Q4DE8NCOJ23 11/09/2011 01:00 2
.
.
.


die Ausgabe sollte (muss aber nicht zwingend) im Ordner
D:\Charts\data
landen.
und so aussehen:
SID;Datum/Zeit;Q4DE8NCOJ23;Q4DE8NCOJ24;Q4DE8NCOJ25;Q4DE8NCOJ26;Q4DE8NCOJ27;Q4DE8NCOJ28;Q4DE8NCOU29;Q4DE8NCOU30;Q4DE8NCOU31
ABC;19.10.2011 00:00;6;10;2;3;0;1;7;1;3
ABC;19.10.2011 00:10;3;15;2;5;1;0;9;2;11
ABC;19.10.2011 00:20;1;9;0;2;1;2;2;11;5
ABC;19.10.2011 00:30;1;13;1;0;0;1;57;8;15
ABC;19.10.2011 00:40;0;5;0;1;2;1;2;1;1
ABC;19.10.2011 00:50;2;4;0;0;1;4;17;2;2

wobei sich im Normafall der Wert "ABC" sowie die erste Zeile nicht ändern.

die angepasste Batch sieht nun so aus:

@echo on &setlocal
REM
REM Setzen des Datums
REM
FOR /F "tokens=1,2,3,4 delims=/. " %%a in ('date/T') do set Cyear=%%c%%b%%a
FOR /F "tokens=1,2,3,4 delims=/. " %%a in ('date/T') do set DAY=%%a
FOR /F "tokens=1,2,3,4 delims=/. " %%a in ('date/T') do set MON=%%b
FOR /F "tokens=1,2,3,4 delims=/. " %%a in ('date/T') do set YEAR=%%c

set "Ordner=D:\Charts\quelle\"
set "inDatei=CPU_Q4DE8NCOJ23_%cyear%" & set "inDatei1="
set Output=3^>"aktuell_win.csv"

pushd "%Ordner%"

del "%Output%" 2>nul

for /f "delims=" %%i in ('dir /b /on "%inDatei%"') do if not defined inDatei1 set "inDatei1=%%i"
if not defined inDatei1 echo Keine passende Datei gefunden! & goto :eof
%Output% >nul <nul (



for /f usebackqtokens^=1-4 %%i in (%inDatei1%) do (



>&3 set/p=";%%j %%k;%%l"



for /f "skip=1 delims=" %%a in ('dir /b /on "%inDatei%"') do for /f tokens^=3 %%m in (' findstr /b /c:"%%j %%k" %%a ') do >&3 set/p=";%%m"



>&3 echo(



) )
popd

Ich gebs gern nochmal zu ... ich hab von batch soviel Ahnung wie vom Tischlern ... ich kann gerade so mit dem "Schleifpapier" umgehen, deswegen nehmts mir bitte nicht krumm wenn ich das ein oder andere ohne eine Erklärung nicht verstehe ;)
ggf. kann mir jemand die Zeilen etwas erklären ?
Bitte warten ..
Mitglied: bastla
18.11.2011 um 16:45 Uhr
Hallo Landstreicher!

Einem Tischler wirst Du aber auch die genauen Maße Deines geplanten Eckregals mitteilen müssen ...

Versuch es damit:
01.
@echo off &setlocal
02.
for /f "tokens=1,2,3,4 delims=/. " %%a in ('date/T') do set "cyear=%%c%%b%%a" & set "DAY=%%a" & set "MON=%%b" & set "YEAR=%%c"
03.

04.
set "Ordner=D:\Charts\quelle\"
05.
set "inDatei=CPU_Q4DE8NCOJ*_%cyear%" & set "inDatei1="
06.
set Output=3^>"D:\Charts\data\aktuell_win.csv"
07.

08.
pushd "%Ordner%"
09.
del "%Output%" 2>nul
10.

11.
for /f "delims=" %%i in ('dir /b /on "%inDatei%"') do if not defined inDatei1 set "inDatei1=%%i"
12.
if not defined inDatei1 echo Keine passende Datei gefunden! & goto :eof
13.

14.
%Output% <nul (
15.
    >&3 set/p="SID;Datum/Zeit"
16.
    for /f "tokens=2 delims=_" %%d in ('dir /b /on "%inDatei%"') do >&3 set/p=";%%d"
17.
    >&3 echo(
18.
    for /f skip^=1usebackqtokens^=1-4 %%i in (%inDatei1%) do (
19.
        >&3 set/p="ABC;%%j %%k;%%l"
20.
        for /f "skip=1 delims=" %%a in ('dir /b /on "%inDatei%"') do for /f tokens^=4 %%m in (' findstr /c:"%%j %%k" %%a ') do >&3 set/p=";%%m"
21.
        >&3 echo(
22.
) )
23.
popd
Kurze Erklärung (eigentlich wäre ja PH zuständig ):

In Zeile 5 ist der "*" wichtig - es sollen ja alle Dateien gefunden werden, die dem Muster "CPU_Q4DE8NCOJNummer_Datum" entsprechen.

In Zeile 8 wird in den Ordner mit den Quelldateien gewechselt - damit muss in weiterer Folge kein Pfad berücksichtigt werden.

Die Zeile 11 dient dazu, die erste Datei zu finden - aus dieser werden dann die Timestamps gelesen (und in allen anderen Dateien die dazu passenden Zeilen gesucht); diese Zeile könnte auch so aussehen:
for /f "delims=" %%i in ('dir /b /o-n "%inDatei%"') do set "inDatei1=%%i"
- in beiden Varianten geht es darum, eben nur die Datei mit der niedrigsten Nummer zu ermitteln.

Zeile 14 ist etwas knifflig - hier wird dafür gesorgt, dass die Ausgaben in der Zieldatei landen (dazu wird Ausgabekanal 3, der defaultmäßig keinem bestimmten Zweck zugeordnet ist, verwendet). Außerdem werden mit der Eingabeumleitung die in der Schleife verwendeten "set /p" mit der Simulation einer Eingabe versorgt (zum Thema "Mehrere Ausgaben in eine Zeile schreiben" gibt's auch ein einschlägiges Tutorial).

In Zeile 15 wird der erste Teil der Überschriftenzeile erzeugt - die oben angesprochene Technik sorgt dafür, dass noch keine Zeilenschaltung geschrieben wird.
Zeile 16 ergänz die Überschrift um die Servernamen, die zu diesem Zweck per "dir" ermittelt und anhand der "_" isoliert werden.
Zeile 17 schließlich versorgt die Überschriftszeile mit der abschließenden Zeilenschaltung (in anderen Fällen wird gerne auch "echo." verwendet).

Zeile 18 legt fest, dass aus der ersten gefundenen Datei (nach Überspringen der Zeile 1 mit "Servername Datum Uhrzeit CPU-Wert(Auslastung)") zeilenweise die gesamten Informationen gelesen werden (stehen dann in %%i, %%j, %%k und %%l), damit in Zeile 19 alles außer dem Servernamen %%i nach dem "ABC;" in die Zieldatei geschrieben werden kann - wieder ohne abschließende Zeilenschaltung.

In Zeile 20 wird wieder per "dir" eine geordnete Liste der Quelldateien erzeugt, aber der erste Eintrag (die Datei %inDatei1% wurde ja schon behandelt) übersprungen. In den restlichen Dateien wird jeweils die sich aus Datum und Uhrzeit (%%j und %%k) ergebende Zeile gesucht und der interessierende Wert (= Token 4) ausgelesen und, samt einem ";" davor, in die Zieldatei geschrieben - wieder jeweils ohne Zeilenumbrucht - dieser folgt in der Zeile 21.

Schließlich wird noch in Zeile 23 das "pushd" (der Ordnung halber) rückgängig gemacht.

Grüße
bastla

P.S.: Ich kann für den Batch Zeilennummern nennen, denn ich habe ihn ja passend formatiert - und da Du ja (auch als "Nicht-Tischler") zumindest polieren können solltest, kannst Du das für den von Dir geposteten Code sicher auch noch nachholen ...
Bitte warten ..
Mitglied: Landstreicher
21.11.2011 um 13:45 Uhr
Hallo bastla,

vielen Dank ! es funktioniert wunderbar! Danke auch noch an pieh-ejdsch und alle anderen Beteidigten.

Das Endergebnis poste ich die Tage noch





Gruß Landstreicher
Bitte warten ..
Mitglied: Biber
26.11.2011 um 20:48 Uhr
Moin Langverstreicher,

Zitat von Landstreicher:
Das Endergebnis poste ich die Tage noch

Ich hatte mal eine flüchtige Bekannte, bei der dauerten die Tage auch manchmal wochenlang.

Nun bemühe ich mich durchaus hier im Forum, das Gender-Bewusstsein zu schärfen und von daher auch dir eine längere Periode zu gönnen, aber....

Magst du nicht zumindest den Beitrag auf "Hinreichend beantwortet" setzen?

Zum Dank würde ich am nächsten Sonntag eine Kerze anzünden.

Grüße
Biber
Bitte warten ..
Mitglied: Landstreicher
13.12.2011 um 10:50 Uhr
Hallo,

war auf Dienstreise, daher etwas verspätet mal mein fertiges Batch

01.
@echo off&setlocal
02.

03.
REM Darstellung der CPU-Auslastung Windowsserver
04.

05.
title Performance Windowsserver
06.
REM #####################################
07.
REM		Setzen des Datums
08.
REM #####################################
09.
FOR /F "tokens=1,2,3,4 delims=/. " %%a in ('date/T') do set Cyear=%%c%%b%%a
10.
FOR /F "tokens=1,2,3,4 delims=/. " %%a in ('date/T') do set DAY=%%a
11.
FOR /F "tokens=1,2,3,4 delims=/. " %%a in ('date/T') do set MON=%%b
12.
FOR /F "tokens=1,2,3,4 delims=/. " %%a in ('date/T') do set YEAR=%%c
13.

14.
REM #####################################
15.
REM		Setzen der Zeit
16.
REM #####################################
17.
set hh=%TIME:~0,2%
18.
set mm=%TIME:~3,2%
19.
set ss=%TIME:~6,2%
20.

21.
REM #####################################
22.
REM		Setze Serverlist
23.
REM #####################################
24.
set servera=Q4DE8NCO*
25.
set SID=DKS
26.

27.
REM #####################################
28.
REM		Setzen der Pararmeter
29.
REM #####################################
30.
set Java="C:\Program Files\Java\jre6\bin\java.exe"
31.
set ChartMaker=D:\Charts\bin\
32.
set Datadir=D:\Charts\data\
33.
set PNGdir=D:\Charts\data\PNG\
34.
set INIdir=D:\Charts\ini\
35.
set Quelle=D:\Charts\quelle\" 
36.
set OutFile=aktuell_win.csv
37.
set Output=3^>"%datadir%%Outfile%"
38.
set PngFile=aktuell_win.png
39.
set IniFile=chart_win.ini
40.
set "inDatei=CPU_Q4DE8NCO*_%cyear%" & set "inDatei1="
41.

42.
REM #####################################
43.
REM		Check Verzeichnisse
44.
REM #####################################
45.
if not exist %Chartmaker% mkdir %Chartmaker%
46.
if not exist %Datadir% mkdir %Datadir%
47.
if not exist %PNGdir% mkdir %PNGdir%
48.
if not exist %INIdir% mkdir %INIdir%
49.

50.
REM #####################################
51.
REM		Baue OutFile
52.
REM #####################################
53.
pushd "%quelle%"
54.
del "%Output%" 2>nul
55.

56.
for /f "delims=" %%i in ('dir /b /on "%inDatei%"') do if not defined inDatei1 set "inDatei1=%%i"
57.
if not defined inDatei1 echo Keine passende Datei gefunden! & goto :eof
58.

59.
%Output% <nul (
60.
    >&3 set/p="SID;Datum/Zeit"
61.
    for /f "tokens=2 delims=_" %%d in ('dir /b /on "%inDatei%"') do >&3 set/p=";%%d"
62.
    >&3 echo(
63.
    for /f skip^=1usebackqtokens^=1-4 %%i in (%inDatei1%) do (
64.
        >&3 set/p="%sid%;%%j %%k;%%l"
65.
        for /f "skip=1 delims=" %%a in ('dir /b /on "%inDatei%"') do for /f tokens^=4 %%m in (' findstr /c:"%%j %%k" %%a ') do >&3 set/p=";%%m"
66.
        >&3 echo(
67.
) )
68.
popd
69.
call %ChartMaker%ersetze.bat
70.
REM #####################################
71.
REM		Baue Chart 
72.
REM #####################################
73.
cd %ChartMaker%
74.
%JAVA% -jar %ChartMaker%ChartMaker.jar %Datadir%%Outfile% %PNGdir%%PngFile% %INIdir%%IniFile%
75.
%PNGdir%%PngFile%
Da sich das Datum in der Ziel - Datei doch geändert hat musste ich die ersetze.bat anschließen drüberbügeln lassen ...

01.
@echo off
02.
setlocal enabledelayedexpansion
03.
pushd "D:\Charts\data"
04.
REM #####################################
05.
REM		Setzen des Datums
06.
REM #####################################
07.
FOR /F "tokens=1,2,3,4 delims=/. " %%a in ('date/T') do set Cyear=%%c%%b%%a
08.
FOR /F "tokens=1,2,3,4 delims=/. " %%a in ('date/T') do set DAY=%%a
09.
FOR /F "tokens=1,2,3,4 delims=/. " %%a in ('date/T') do set MON=%%b
10.
FOR /F "tokens=1,2,3,4 delims=/. " %%a in ('date/T') do set YEAR=%%c
11.

12.
REM #####################################
13.
REM		Setze Datei
14.
REM #####################################
15.

16.
set "filename=aktuell_win.csv"
17.
set "tempfile=aktuell_win_.csv"
18.

19.
REM #####################################
20.
REM		lese erste Zeile aus
21.
REM #####################################
22.

23.
for /F "delims=" %%i in (D:\Charts\data\aktuell_win.csv) do if not defined zeile set "zeile=%%i"
24.
echo %zeile% >%tempfile%
25.

26.
REM #####################################
27.
REM  lese restliche Zeilen aus und bau um
28.
REM #####################################
29.

30.
for /F "skip=1 tokens=1-13 delims=/;" %%a in (%filename%) do (
31.
set text=%%a;%%c.%%b.%%d;%%e;%%f;%%g;%%h;%%i;%%j;%%k;%%l;%%m
32.
set text=!text:^|=;!
33.
echo !text!>>%tempfile%
34.
)
35.

36.

37.
REM #####################################
38.
REM  lösche altes File / benenne TEMP um
39.
REM #####################################
40.

41.
del %filename%
42.
ren %tempfile% %filename%
43.
popd
das Ergebnis sieht dann so aus aktuell_win.csv
01.
SID;Datum/Zeit;Q4DE8NCOJ23;Q4DE8NCOJ24;Q4DE8NCOJ25;Q4DE8NCOJ26;Q4DE8NCOJ27;Q4DE8NCOJ28 
02.
DKS;12.12.2011 00:10;1;1;2;1;0;2;;;
03.
DKS;12.12.2011 00:20;0;1;4;0;2;0;;;
04.
DKS;12.12.2011 00:30;0;2;2;1;0;0;;;
05.
DKS;12.12.2011 00:40;1;0;3;1;0;1;;;
06.
DKS;12.12.2011 00:50;1;0;1;1;1;0;;;
07.
DKS;12.12.2011 01:00;0;0;2;1;0;1;;;
08.
DKS;12.12.2011 01:10;1;1;2;1;0;3;;;
09.
DKS;12.12.2011 01:20;1;2;2;0;0;1;;;
(;;; <-- hier kommen noch 3 Server - CPU - Werte hinzu)

anschließend wird durch den Cchartmaker.jar eine CPU Kurve gebaut ...

vielen dank noch mal an alle Mitwirkenden

gruß Landstreicher
Bitte warten ..
Mitglied: Landstreicher
13.12.2011 um 10:51 Uhr
Nachtrag: ich bestehe auf meine angezündete Kerze
PS: wenn jemand optimierungsvorschläge hat ... nur zu bin ganz Ohr.
Bitte warten ..
Mitglied: Biber
13.12.2011 um 13:19 Uhr
Moin Lahmschleicher


Zitat von Landstreicher:
Nachtrag: ich bestehe auf meine angezündete Kerze
PS: wenn jemand optimierungsvorschläge hat ... nur zu bin ganz Ohr.
Da bist du aber haarscharf an einem -na ja, nicht Fall ins Bodenlose, aber zumindest dem Zurückholen auf den Boden der harten Tatsachen vorbeigeschrammt.
Gerade gestern abend habe ich noch ein paar feedbacklose Beiträge durchgeblättert und auch ein paar endgültig vaporisiert.
Deinen hatte ich auch in der Hand... *gg

Wie dem auch sei - du scheinst ein gutes Gefühl für das richtige Timing zu haben.

Ich werde deshalb am nächsten Sonntag gleich vier Kerzen für Dich anzünden.

Grüße
Biber
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Batch - .csv to .txt
gelöst Frage von freshman2017Batch & Shell11 Kommentare

Hallo Ihr, ich habe da nochmal eine leichte kurze Frage, vielleicht hat da jemand ein Code für mich. Folgende ...

Batch & Shell
Werte aus CSV in TXT - Powershell
gelöst Frage von Komoran12Batch & Shell20 Kommentare

Hallo Ihr, ich benötige mal wieder Eure Hilfe,kann mir wer mit einem Code aushelfen? Ich habe eine .csv mit ...

Batch & Shell

Bestimmte Teile einer TXT Datei per Batch in eine neue CSV speichern

Frage von WebtixBatch & Shell8 Kommentare

Hallo zusammen, ich bekomme von einem externen Dienstleister in unregelmäßigen Abständen TXT Files mit verschiedenen Werten. Diese sind immer ...

Windows 7

Suche nach virtuellem Drucker bzw. Druckertreiber zum Druck in CSV oder TXT-Datei

gelöst Frage von SinzalWindows 76 Kommentare

Hallo Admins, vielleicht ist es eine super-primitive Frage, aber ich habe bisher kein zufriedenstellendes Ergebnis ergoogeln können: In einem ...

Neue Wissensbeiträge
Firewall
PfSense 2.5.0 benötigt doch kein AES-NI
Tipp von ChriBo vor 8 StundenFirewall

Hallo, Wie sich einige hier erinnern werden hat Jim Thompson in diesem Aritkel beschrieben, daß ab Version 2.5.0 ein ...

Internet
Copyright-Reform: Upload-Filter
Information von Frank vor 1 TagInternet

Hallo, viele Menschen reden aktuell von Upload-Filtern. Sie reden darüber, als wären es eine Selbstverständlichkeit, das Upload-Filter den Seitenbetreibern ...

Google Android

Blokada: Tracking und Werbung unter Android unterbinden

Information von AnkhMorpork vor 1 TagGoogle Android1 Kommentar

In Ergänzung zu meinem vorherigen Beitrag: Blokada efficiently blocks ads, tracking and malware. It saves your data plan, makes ...

Google Android
Facebooks unsichtbare Datensammlung
Information von AnkhMorpork vor 1 TagGoogle Android2 Kommentare

Rund 30 Prozent aller Apps im Play-Store nehmen Kontakt zu Facebook auf, sobald man sie startet. So erfährt der ...

Heiß diskutierte Inhalte
Linux Userverwaltung
LogIn Versuche beschränken auf EINEN Versuch
gelöst Frage von GarroshLinux Userverwaltung21 Kommentare

Folgendes Problem Ich habe einen dezidierten Server beim Hoster gemietet, installiert ist Ubuntu 18.04.2 LTS‬ und als Webinterface Plesk. ...

DSL, VDSL
Neuer Glasfaser Anschluss - IPv4-Adressraum
Frage von norre2000DSL, VDSL12 Kommentare

Hallo Zusammen, ich werde meinen Glasfaser Anschluss wechseln und bin beim Ausfüllen des Antrags auf Fragen gestoßen bei denen ...

Internet
Aktuell HP-Support-Seite kaputt?
gelöst Frage von LochkartenstanzerInternet12 Kommentare

Hallo Kollegen, Weiß einer von euch, seit wann die HP-Support-Seite kaputt ist? ) Wollte heute morgen Druckertreiber runterladen und ...

Ubuntu
Exchange Alternative auf Ubuntu
Frage von TELLOUbuntu11 Kommentare

Hi NG, wir müssen für unsere Kleine Firma (5 User) das Email / Kalendersystem neu einrichten. Ich könnte jetzt ...