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

In einer txt.datei einen bestimmten Bereich auslesen

Frage Microsoft Windows Tools

Mitglied: TheQuestion

TheQuestion (Level 1) - Jetzt verbinden

20.07.2007, aktualisiert 18.10.2012, 4833 Aufrufe, 19 Kommentare

Hallo zusammen,

ich habe ein Problem und zwar bekomme ich jeden Tag 2 Logdateien. Diese sind aber locker 30 - 50 Seiten stark und das kostet mich jeden Tag viel Zeit diese Logs zu kontrollieren.
In dieser Kontrolle such ich einfach nach den Dateiabschnnitten wo ein Kopiervorgang nicht funktioniert hat.
Dieses wird mit dem Wort "failed" angezeigt.
Ich bekomme zusätzlich eine Tabelle (in der txt.datei) mit der Auflistung was bei jedem Kopiervorgang gemacht wurde.
Sieht so aus=>

24bf2c2696e34c266df5863402ab049b-1 - Klicke auf das Bild, um es zu vergrößern

Wie man sieht sind hier "0 Files mit Failed".
Nun ist meine Frage gibt es eine Möglichkeit das in eine Batch.datei oder eine andere Art von Datei zu packen, dass diese mir dann nur diese Tabellen oder alles was unter dem Wort "FAILED" steht anzeigt?
Da ich aber, ich würde mal sagen, nur geringe Programmierfähigkeiten besitzte und diese dann nur in C++, hänge ich nun einwenig in der Luft.
Wäre schön wenn mir jemand einen Lösungsanssatz nennen könnte.....

schonmal Danke im Vorraus für eure Hilfe.

Gruss Stephan
Mitglied: miniversum
20.07.2007 um 13:16 Uhr
Versuchs mal mit ner Batch datei die so aussieht:
@echo off & setlocal enabledelayedexpansion
set "failedzeile="
FOR /F "tokens=1 delims=[]" %%a in ('find /N "FAILED" Datei.txt) do if not defined failedzeile set failedzeile = %%a
FOR /F "skip=%failedzeile% delims=" %%l in (Datei.txt) do echo %%i
set /a failedzeile-=1
set counter=0
FOR /F "skip=%failedzeile% delims=" %%l in (Datei.txt) do (
if !counter! leq 4 echo %%i>>Tabelle.txt
set /a counter+=1
)

miniversum
Bitte warten ..
Mitglied: TheQuestion
20.07.2007 um 14:09 Uhr
danke für die schnelle antwort
probiere das gleich mal aus
Bitte warten ..
Mitglied: TheQuestion
23.07.2007 um 08:24 Uhr
mhm Ok, dass hat erstmal noch nicht geklappt. Versuche es aber weiter.
Hier ist der Fehler der mir ausgegeben wird.

=> " delims="" ist syntaktisch an dieser Stelle nicht verarbeitbar.
das bekomme ich zweimal...

Sagt mit leider nicht viel .......
Bitte warten ..
Mitglied: Biber
23.07.2007 um 09:01 Uhr
Moin TheQuestion,

mmh...die Fehlermeldung ist auch irreführend, weil der Tippfehler ganz woanders liegt:

STREICHE: ....... ('find /N "FAILED" Datei.txt) .......
SETZE: ............ ('find /N "FAILED" Datei.txt') .......

---> bzw. ergänze das fehlende einfache Hochkomma.

Grüße
Biber
Bitte warten ..
Mitglied: TheQuestion
23.07.2007 um 09:42 Uhr
ok den Tippfehler habe ich korregiert, aber die Fehlermedlung bleibt die selbe,
so sieht die Batch-datei nun aus.

01.
@echo off & setlocal enabledelayedexpansion 
02.
set "failedzeile=" 
03.
FOR /F "tokens=1 delims=[]" %%a in ('find /N "FAILED" Dateiname') do if not defined failedzeile set failedzeile = %%a 
04.
FOR /F "skip=%failedzeile% delims=" %%l in (Dateiname) do echo %%i 
05.
set /a failedzeile-=1 
06.
set counter=0 
07.
FOR /F "skip=%failedzeile% delims=" %%l in (Dateiname) do ( 
08.
if !counter! leq 4 echo %%i>>Tabelle.txt 
09.
set /a counter+=1 
10.
11.
pause
ist da vielleicht noch irgendwo nen Fehler drin den ich übersehen habe?

Mit freundlichen Grüßen
Bitte warten ..
Mitglied: Biber
23.07.2007 um 10:19 Uhr
Moin TheQuestion,

>..ist da vielleicht noch irgendwo nen Fehler drin den ich übersehen habe?
Nein, Du nicht... aber ich *schäm*

Sorry, ich hatte auch nur biooptisch-global gescant (=einen kurzen Blick darauf geworfen).
Der nächste Fehler ist für einen Laien kaum zu finden:
Bei den dynamischen Zählvariablen wird im Gegensatz zu allen anderen CMD-Variablen zwischen GROSS- und klein-Schreibung unterschieden. Sprich GROSS-%%I ist ungleich klein-%%i.

Und das ist in mehreren FOR-Anweisungen so.
Ich versuche es mal ungetestet zu korrigieren:
01.
@echo off & setlocal EnableDelayedExpansion 
02.
set "failedzeile=" 
03.
FOR /F "tokens=1 delims=[]" %%a in ('find /N "FAILED" Dateiname') do ( 
04.
     if not defined failedzeile set "failedzeile=%%a" 
05.
06.
REM Uncomment for Debug ##: FOR /F "skip=%failedzeile% delims=" %%i in (Dateiname) do echo %%i 
07.
set /a failedzeile-=1 
08.
set counter=0 
09.
FOR /F "skip=%failedzeile% delims=" %%i in (Dateiname) do ( 
10.
             if !counter! leq 4 echo %%i>>Tabelle.txt 
11.
             set /a counter+=1 
12.
)
So in etwa müsste es von miniversum gemeint gewesen sein... ich habe alle GROSS-%%I durch klein-%%i ersetzt.

Bitte neuer Versuch.
Grüße
Biber
Bitte warten ..
Mitglied: TheQuestion
23.07.2007 um 10:35 Uhr
super danke,

test läuft ergebnisse gibts gleich!
Bitte warten ..
Mitglied: TheQuestion
23.07.2007 um 10:38 Uhr
Mhm Test ist gelaufen, Ergebniss
=> bekomme immer noch den selben Fehler bloss diesmal nur noch einmal!
Ist schon ne Verbesserung
Sorry würde gerne mehr helfen als immer nur Fehler zuposten........
Bitte warten ..
Mitglied: bastla
23.07.2007 um 11:03 Uhr
Hallo TheQuestion!

Ersetze
01.
FOR /F "tokens=1 delims=[]" %%a in ('find /N "FAILED" Dateiname') do (
durch
01.
FOR /F "<b>skip=2</b> delims=[]" %%a in ('find /N "FAILED" Dateiname') do (
oder besser
01.
FOR /F "delims=:" %%a in ('findstr /N "FAILED" Dateiname') do (
Grüße
bastla

[Edit] "findstr"-Variante ergänzt [/Edit]
Bitte warten ..
Mitglied: TheQuestion
23.07.2007 um 11:12 Uhr
Erstmal herzlichen Dank für eure Hilfe

@ bastla=> klasse jetzt funktioniert die batch.datei.
Hier mal die korrigierte Batch:

01.
@echo off & setlocal EnableDelayedExpansion 
02.
set "failedzeile=" 
03.
FOR /F "skip=2 delims=[]" %%a in ('find /N "FAILED" Dateiname') do ( 
04.
     if not defined failedzeile set "failedzeile=%%a" 
05.
06.
REM Uncomment for Debug ##: FOR /F "skip=%failedzeile% delims=" %%i in (Dateiname) do echo %%i 
07.
set /a failedzeile-=1 
08.
set counter=0 
09.
FOR /F "skip=%failedzeile% delims=" %%i in (Dateiname) do ( 
10.
             if !counter! leq 4 echo %%i>>Tabelle.txt 
11.
             set /a counter+=1 
12.
)
So beitrag kann dann auch auf gelöst und geschlossen gesetzt werden.

Gruss TheQuestion
Bitte warten ..
Mitglied: miniversum
23.07.2007 um 11:25 Uhr
Lese es jetzt erst. Ups hab das mal wieder ncith getestet.

@TheQuestion
Nimm mal die Batch die Biber gepostet hat.
In der ersten Forschleife fehlt noch was. Mach aus dem
FOR /F "tokens=1 delims=[]" %%a in ('find /N "FAILED" Datei.txt') do (
das:
FOR /F "skip=2 tokens=1 delims=[]" %%a in ('find /N "FAILED" Datei.txt') do (

Dann sollte es gehen.

miniversum

EDIT: ups zu spät.
Bitte warten ..
Mitglied: TheQuestion
23.07.2007 um 12:08 Uhr
egal ob zu spät

danke nochmals für die rege Beteiligung
Bitte warten ..
Mitglied: TheQuestion
23.07.2007 um 12:26 Uhr
Sorry aber mir ist gerade nochwas eingefallen,

in den Logs stehen mehr als nur eine Tabelle mit Failed drin.
Kann man da eine For-Schleife ein bauen die von einer Tabelle in die nächste springt?
Habe es mit einer anderen Batch.datei porbiert die die von oben immer aufruft aber das bringt ja nichts, oder mehr gesagt immer das selbe.

Kann mir da jemand nochmal unter die arme greifen??
Bitte warten ..
Mitglied: bastla
23.07.2007 um 13:21 Uhr
Hallo TheQuestion!
01.
@echo off & setlocal EnableDelayedExpansion 
02.
set "Datei=D:\Robolog.txt" 
03.
set "Tabelle=D:\Tabelle.txt" 
04.
if exist "%Tabelle%" del "%Tabelle%" 
05.
set "failedzeile=" 
06.
FOR /F "delims=:" %%a in ('findstr /N "FAILED" "%Datei%"') do set "failedzeile=%%a" & call :Ausgabe 
07.
goto :eof 
08.
:Ausgabe 
09.
echo Zeile %failedzeile%>>"%Tabelle%" 
10.
set /a failedzeile-=1 
11.
set counter=0 
12.
FOR /F "usebackq skip=%failedzeile% delims=" %%i in ("%Datei%") do ( 
13.
             if !counter! leq 4 echo %%i>>"%Tabelle%" 
14.
             set /a counter+=1 
15.
16.
echo.>>"%Tabelle%" 
17.
echo.>>"%Tabelle%" 
18.
goto :eof
Es werden in dieser Version die zu verwendenden Dateien mit "set"-Zeilen am Anfang festgelegt. Außerdem habe ich Zeilennummer und 2 Leerzeilen vor bzw nach Ausgabe der Tabellen hinzugefügt - wenn nicht gewünscht, die entsprechenden "echo"-Zeilen entfernen.

Grüße
bastla
Bitte warten ..
Mitglied: bastla
23.07.2007 um 13:24 Uhr
Eigentlich hatte ich da oben etwas mehr geschrieben, nämlich:

Hallo TheQuestion!

01.
 
02.
@echo off & setlocal EnableDelayedExpansion 
03.
set "Datei=D:\Robolog.txt" 
04.
set "Tabelle=D:\Tabelle.txt" 
05.
if exist "%Tabelle%" del "%Tabelle%" 
06.
set "failedzeile=" 
07.
FOR /F "delims=:" %%a in ('findstr /N "FAILED" "%Datei%"') do set "failedzeile=%%a" & call :Ausgabe 
08.
goto :eof 
09.
:Ausgabe 
10.
echo Zeile %failedzeile%>>"%Tabelle%" 
11.
set /a failedzeile-=1 
12.
set counter=0 
13.
FOR /F "usebackq skip=%failedzeile% delims=" %%i in ("%Datei%") do ( 
14.
             if !counter! leq 4 echo %%i>>"%Tabelle%" 
15.
             set /a counter+=1 
16.
17.
echo.>>"%Tabelle%" 
18.
echo.>>"%Tabelle%" 
19.
goto :eof 
20.
 
Es werden in dieser Version die zu verwendenden Dateien mit "set"-Zeilen am Anfang festgelegt. Außerdem habe ich Zeilennummer und 2 Leerzeilen vor bzw nach Ausgabe der Tabellen hinzugefügt - wenn nicht gewünscht, die entsprechenden "echo"-Zeilen entfernen.

Grüße
bastla
Bitte warten ..
Mitglied: TheQuestion
23.07.2007 um 13:34 Uhr
ok da wäre ich selber nicht drauf gekommen!
Also nochmal danke nun habe ich alles bei sammmen und kann mir dadurch ziemlich viel arbeit sparen!!!

Achso habe ich fast vergessen, es funktioniert einwandfrei!

Bis zum nächsen Mal

Gruss Thequestion
Bitte warten ..
Mitglied: Biber
23.07.2007 um 14:10 Uhr
Moin TheQuestion,
>kann mir dadurch ziemlich viel arbeit sparen
Ist ja auch in Ordnung...aber das Setzen des Beitrags auf "Gelöst" ist noch Dein Job!

@bastla [OT - zum Bug beim Posten]
Habe den bei Deinem Kommentar aufgefallenen Bug im AFABS (Adminstrator.de-Bug-and-Feature-Tracking-Sülzdibülz) eingestellt.

Werde auch posten, wenn dieser Bug lokalisiert und gefixt ist.
An Deinem geposteten Kommentar finde ich auch keine Auffälligkeiten.

Grüße
Biber
Bitte warten ..
Mitglied: bastla
23.07.2007 um 16:13 Uhr
@Biber

Thx

Grüße
bastla
Bitte warten ..
Mitglied: bastla
23.07.2007, aktualisiert 18.10.2012
@Biber

Falles es ev hilft: Von dem Bug sind auch andere Threads / User betroffen, siehe zB http://www.administrator.de/forum/bug-im-script-wer-kennt-sich-aus%3f-6 ...
und http://www.administrator.de/forum/dateinamen-aus-ftpverzeichnis-auslese ...

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(2)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Batch & Shell
gelöst Einzelne Zeilen in txt Datei speichern und auslesen (7)

Frage von noah1400 zum Thema Batch & Shell ...

Webentwicklung
HTML Output in eine txt Datei mit VisualBasicScript (2)

Frage von coca22COCA zum Thema Webentwicklung ...

Batch & Shell
Merkwürdige Zeilenformatierung in txt Datei (3)

Frage von miczar zum Thema Batch & Shell ...

PHP
gelöst Externe XML-Datei in PHP auslesen (18)

Frage von Akrosh zum Thema PHP ...

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

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...