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
Kommentar vom Moderator Biber am 01.09.2011 um 09:32:34 Uhr
Link korrigiert und Beitrg verschoben nach "Batch &Shell"

gelöst Daten aus Textdatein per Kommandozeile extrahieren und anzeigen

Mitglied: ceng.de

ceng.de (Level 1) - Jetzt verbinden

01.09.2011, aktualisiert 09:32 Uhr, 3368 Aufrufe, 9 Kommentare

Hi,
nach meinem letzten Eintrag (Logdateien per Kommandozeile auswerten (For-If, Find etc.) - Wer kann noch DOS?) habe ich geglaubt, ich habe die Funktionsweise der FOR Schleife gerafft...

Vielleicht kann mir jemand sagen, was an meiner Schleife falsch ist.

Zur Erklärung:
Ein PC schreibt beim LOGIN in ein Verzeichnis eine Datei mit seinem Hostname. In der steht z.B. der Benutzername drinnen.

Die einzelnen Dateien schreibe ich mir in eine Datei (%temp%\rechner.txt und möchte sie Zeile für Zeile auswerten und je Rechnereintrag in der %temp%\rechner.txt eine Zeile in einer HTML Datei zufügen...

NUR... Ich kriegs nicht hin und verstehe auch nicht, warum?

01.
@echo off & setlocal 
02.
set rechnerzahl=1 
03.
set maxdurchlauefe=10 
04.
set tempdatei=%dateiverzeichniss%\onlinestatus.htm 
05.
set dateiverzeichniss=C:\inetpub\wwwroot\diagnose 
06.
set durchlauf=0 
07.
set trennzeile=+++++++++++++++++++++++++++++++++++++++++++++++++++ 
08.
 
09.
del %tempdatei% 
10.
 
11.
REM In der Vorbereitung werden die erstezn Zeilen der HTML Datei zusammengeschrieben. 
12.
REM Die Kopfdaten und die beiden Rahmen definiert. 
13.
:vorbereitung 
14.
echo ^<!DOCTYPE html PUBLIC ^"-//W3C//DTD HTML 4.01 Transitional//EN^">%tempdatei% 
15.
echo    ^"http://www.w3.org/TR/html4/loose.dtd^"^>>>%tempdatei% 
16.
echo ^<head^>>>%tempdatei% 
17.
echo 	^<meta http-equiv=^"Content-Type^" content=^"text/html; charset=iso-8859-1^" /^>>>%tempdatei% 
18.
echo 	^<title^>architekturagentur Stuttgart - Arno Freudenberger, Klaus Grübnau^</title^>>>%tempdatei% 
19.
echo 	^<link rel^=^"stylesheet^" type^=^"text^/css^" href^=^"http^:^/^/www.architekturagentur.de^/support^/styles.css^"^>>>%tempdatei% 
20.
echo 	^<!--script type=^"text/javascript^" src=^"support/scripts.js^"^>^</script--^>>>%tempdatei% 
21.
echo ^</head^>>>%tempdatei% 
22.
echo ^<body style=^"margin:0px;padding:0px;background-color:#FFFFFF^"^>>>%tempdatei% 
23.
echo ^<table border^=^"0^" width=^"80%%^"  align^=^"center^"^>>>%tempdatei% 
24.
echo ^<tr^>>>%tempdatei% 
25.
echo ^<td align^=^"center^" valign^=^"middle^"^> >>%tempdatei% 
26.
echo ^<p^>^<p^>^&nbsp;^<p^>letzte Aktualisierung am: %date%, %time%^<^/^p^>>>%tempdatei% 
27.
echo ^<p^>^<p^>^&nbsp;^</p^>>>%tempdatei% 
28.
echo.>>%tempdatei% 
29.
echo ^<table border^=^"1^" width=^"100%%^"^> >>%tempdatei% 
30.
 
31.
echo on 
32.
 
33.
REM Pro txt Datei im Verzeichnis wird dieser Loop durchgegangen 
34.
:einzelnerRechner 
35.
 
36.
rem Dateien im Verzeichnis auswerten 
37.
dir %dateiverzeichniss%\*.txt|find ".txt">%temp%\rechner.txt 
38.
 
39.
REM +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
40.
REM + HIER IST GLAUB ICH MEIN PROBLEM 
41.
REM +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
42.
 
43.
 
44.
for /f "tokens=4 delims= " %%a in (%temp%\rechner.txt) do ( 
45.
echo %%a 
46.
set /a durchlauf=%durchlauf%+1 
47.
 
48.
rem Setzen der Informationen aus der Datei 
49.
set detaildatei=%%a 
50.
REM +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
51.
REM + HIER IST GLAUB ICH EIN WEITERES PROBLEM (ich will ja nicht foobar.txt als Rechnername haben) 
52.
REM +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
53.
for /f "tokens=* delims=. " %%b in ("%%a") do set Rechner=%%b 
54.
 
55.
echo %trennzeile% 
56.
echo %%a 
57.
echo %%b 
58.
echo %trennzeile% 
59.
 
60.
rem Suchen der Benutzerdaten in der Einzeldatei im Verzeichnis 
61.
find %dateiverzeichniss%\%%a "Benutzer:">%temp%\benutzername.txt 
62.
for /f "tokens=2 delims=:" %%i in (%temp%\benutzername.txt) do set benutzername=%%i 
63.
 
64.
echo off 
65.
rem Schreiben der Informationen in die HTML Datei 
66.
echo ^<tr^>>>%tempdatei% 
67.
echo        ^<td^>%%a^</td^>>>%tempdatei% 
68.
echo        ^<td^>%Benutzername%^</td^>>>%tempdatei% 
69.
echo        ^<td^>^<img src^=^"^.^.^\images^\punkt_gruen.gif^" width^=^"6^" height^=^"10^" border^=^"0^" align^=^"middle^"^>online^<^/td^>>>%tempdatei% 
70.
echo        ^<td^>^<a href^=^"%detaildatei%^"^>Details^<^/a^>^<^/td^>>>%tempdatei% 
71.
echo ^<^/tr^>>>%tempdatei% 
72.
echo on 
73.
 
74.
75.
 
76.
pause 
77.
cls 
78.
 
79.
:hochzaehler 
80.
set /a rechnerzahl=%rechnerzahl%+1 
81.
if %rechnerzahl%==%maxdurchlauefe% goto end 
82.
goto EinzelnerRechner 
83.
 
84.
:end 
85.
echo ^<^/table^>>>%tempdatei% 
86.
echo ^<^p^>^&nbsp^;^<^/p^>>>%tempdatei% 
87.
echo ^<^/td^>>>%tempdatei% 
88.
echo ^<^/tr^>>>%tempdatei% 
89.
echo ^<^/table^>>>%tempdatei% 
90.
echo ^<^/body^>>>%tempdatei% 
91.
echo ^<^/html^>>>%tempdatei% 
92.
 
93.
 
Vielen Dank für Eure Ideen
Mitglied: 60730
01.09.2011 um 09:48 Uhr
moin,

nur mal als allerersten Ansatz..

C:\script>set haumichblau= 
 
C:\script>set haumichgruen= 
 
C:\script>set haumichgruen=%haumichblau%\123 
 
C:\script>set haumichblau=17 
 
C:\script>set haumichgruen 
haumichgruen=%haumichblau%\123

nimm das vermaledeite @ Echo off raus, solange du "testest"


und wenn du dich jetzt frägen tutest, wtf - schau dir deine Zeile 4 & 5 an....

Gruß
Bitte warten ..
Mitglied: ceng.de
01.09.2011 um 10:03 Uhr

und wenn du dich jetzt frägen tutest, wtf - schau dir deine Zeile 4 & 5 an....

Uuups... Der Wald und die Bäume...

-> ändert aber nichts am nichtfunktionieren der For Schleife... leider...
Bitte warten ..
Mitglied: Skyemugen
01.09.2011 um 10:20 Uhr
Aloha,

gucke ich mir eventuell noch einmal an aber erst einmal als Effizienz-Tipp folgendes:
01.
>>"%tempdatei%"(echo bla 
02.
echo keks 
03.
echo und 
04.
echo so 
05.
echo weiter)
Bei deinem Echofluss reduziert das deutlich die Zugriffe auf die Datei (auf, schreiben, zu, auf, schreiben, zu ...)

Und es erspart den evtl. fehleranfälligen Anblick von
^>>>
bei
^> >>
fließt überflüssigerweise noch ein Leerzeichen mit ein, auch das wird mit einer Voranstellung verhindert

Desweiteren empfiehlt sich (gerade hier), die Subarbeitung innerhalb der Schleife(n) nachgestellt zu setzen (sprich: TAB), um die Funktionsansicht besser darzustellen.

Noch etwas
set detaildatei=%%a
verstehe ich nicht, wenn du sowieso mit %%a weiterarbeitest, warum dann nicht auch im echo für die Datei?
echo        ^<td^>^<a href^=^"%%a^"^>Details^<^/a^>^<^/td^>
genauso mit benutzername etc ... mit einem übersichtlicheren Aufbau der Struktur wäre das auch viel eindeutiger zu erkennen, zumal du teilweise schon im echo die Schleifenvariablen direkt einsetzt ...

Dann erspart man sich auch das von Biber genannte enabledelayedexpansion (was ich gerade bei HTML etc. sowieso vermeiden und lieber Unterprozesse ackern lassen würde)

greetz André
Bitte warten ..
Mitglied: Biber
01.09.2011 um 10:20 Uhr
Moin ceng.de,

eine "FOR...IN.. DO ( )" Anweisung ist für den CMD-Interpreter EINE auszuführende Zeile, auch wenn diese "Programmzeile sich in dem Schnipsel z.b. von Zeile 44 bis 74 zieht.
Bedeutet, dass alle dort verwendeten Variablen (z.B. %benutzername%) genau EINMAL aufgelöst werden - quasi "bei Betreten" der Zeile 44 (die in in Zeile 74 endet).

Wenn du Variablen innerhalb der FOR-Anweisung neu setzt und den neu gesetzten Wert verwenden willst, dann musst du
a) ganz oben aus "setlocal" ein "setlocal EnableDelayedExpansion" machen
b) die innerhalb der FOR-Anweisung neu gesetzten Variablen nach dem Setzen nicht als %benutzername%, sondern in der Schreibweise !benutzername! anfassen.

Eine Forumssuche nach "EnableDelayedExpansion" oder "verzögerter Variablenauflösung" könnte helfen.

Grüße
Biber
Bitte warten ..
Mitglied: 60730
01.09.2011 um 10:24 Uhr
Zitat von ceng.de:
>
> und wenn du dich jetzt frägen tutest, wtf - schau dir deine Zeile 4 & 5 an....

Uuups... Der Wald und die Bäume...

eben und wenn mir beim groben durchlesen schon in Zeile 1,4&5 sowas auffällt, dann fällt sich bei mir die Entscheidung, das ich den Rest der Bäume garnicht ansehen möchte.


nimm das vermaledeite @ Echo off raus, solange du "testest"


Oder erwartest du allen ernstes, einer von uns baut sich deine Struktur zusammen - wir sind doch keine Arschitekten
Bitte warten ..
Mitglied: ceng.de
01.09.2011 um 10:33 Uhr
01.
>>"%tempdatei%"(echo bla 
02.
> echo keks 
03.
> echo und 
04.
> echo so 
05.
> echo weiter)

das verstehe ich noch nicht, wie kann ich etwas in eine Datei umleiten, wenn der Umleitungsinhalt erst nach der Klammer kommt. -> Aber da das ehr Effizienzsteigerung ist, werde ich das mit meinen begrenzten Neuronenkapazitäten später versuchen zu verstehen.
Bitte warten ..
Mitglied: ceng.de
01.09.2011 um 10:42 Uhr
Wenn du variablen innerhalb der FOR-Anweisung neu setzt und den neu gesetzten Wert verwenden willst, dann musst du
a) ganz oben aus "setlocal" ein "setlocal EnableDelayedExpansion" machen
b) die innerhalb der FOR-Anweisung neu gesetzten Variablen nach dem Setzen nicht als %benutzername%, sondern in der Schreibweise
!benutzername! anfassen.

-> Nachdem ich die beiden Einträge gemacht habe (EnableDel... und !benutze...) kommen die richtigen Aussagen.

JETZT MUSS ICH NUR NOCH VERSTEHEN, WARUM DAS SO IST...

Aber zunächst einmal Danke für Eure Hilfe
Bitte warten ..
Mitglied: Skyemugen
01.09.2011 um 10:47 Uhr
Aloha,

>>%datei% echo Inhalt und echo Inhalt>>%datei% sind beide ein Kommando, auf einer Zeile, daher tun sie genau dasselbe, nur das ersteres keine Leerzeichenproblematik (wie schon oft vorgekommen) hervorruft.
Meinen Tipp könntest du also auch so ansehen:
01.
(echo bla 
02.
echo keks 
03.
echo und 
04.
echo so 
05.
echo weiter)>>"%tempdatei%"
Finde ich aber inzwischen bei längeren Blöcken (in Klammern natürlich, sonst wäre es kein Block mehr) unschön erst am Ende nachvollziehen zu können, wo es hingeschrieben wird. Von der Ansicht optimaler wäre wohl sowieso
>>%datei% ( 
echo Zeile 1 
echo Zeile 2 
echo letzte Zeile 
)
greetz André
Bitte warten ..
Mitglied: Biber
01.09.2011 um 14:51 Uhr
Moin ceng.de

Zitat von ceng.de:
-> Nachdem ich die beiden Einträge gemacht habe (EnableDel... und !benutze...) kommen die richtigen Aussagen.
Dann könntest du doch zumindest schon ein ganz, ganz blasses oikalyptusfarbenes Erledigt-Häkchen oben andeuten....

JETZT MUSS ICH NUR NOCH VERSTEHEN, WARUM DAS SO IST...

Eventuell mal Hilfe da suchen, wo sie die hinterhältigen RedmonderInnen gemeinerweise gut versteckt haben - in der Hilfe.
> Set /? 
.... 
... 
Die verzögerte Erweiterung von Umgebungsvariablen erlaubt es, eine 
Umgebungsvariable, unter Verwendung eines weiteren Zeichens (dem 
Ausrufezeichen), zur Laufzeit zu erweitern. Mit aktivierter verzögerter 
Erweiterung von Umgebungsvariablen können obige Beispiele wie folgt geschrieben 
werden: 
 
    set VAR=vorher 
    if "%VAR%" == "vorher" ( 
        set VAR=nachher 
        if "!VAR!" == "nachher" @echo Es funktioniert! 
 
    set LISTE= 
    for %i in (*) do set LISTE=!LISTE! %i 
    echo %LISTE% 
....
Grüße
Biber
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Batch: Bestimmte Zeile in Textdatein ausgeben?

gelöst Frage von TaubeTecIncBatch & Shell4 Kommentare

Guten Tag, so habe ich ein Programm und 2 Dateien. Das Programm soll in der Datei1 ein bestimmtes wort ...

Datenbanken

Doppelte Daten anzeigen die nicht exact doppelt sind!

gelöst Frage von ChillministratorDatenbanken26 Kommentare

Hallo zusammen, ich habe eine Tabelle GRUNDWASSER die seit über 20 Jahren täglich mit Messdaten von ettlichen Loggern gefüttert ...

Webentwicklung

SQL Daten in HTML anzeigen lassen

Frage von MiStWebentwicklung1 Kommentar

Hallo, ich habe eine Sybase-Datenbank und ich möchte gerne mir Tabellen aus dieser Datenbank im Browser anzeigen lassen. Welche ...

Batch & Shell

Powershell Zip extrahieren

gelöst Frage von MarabuntaBatch & Shell2 Kommentare

Hi, ich möchte ein ZIP-Archiv extrahieren, und dabei alles überschreiben. Zur Zeit kommt mit dem Code auch ein fortschrittsfenster, ...

Neue Wissensbeiträge
Sonstige Systeme
Es war einmal ein BeOS - Wer erinnert sich noch?
Information von BassFishFox vor 1 TagSonstige Systeme5 Kommentare

Hallo, Bin gerade ueber Haiku gestolpert, von dessen Existenz als "Nachfolger des BeOS" ich wusste nur mich nie wirklich ...

Datenschutz

Microsoft und DSGVO - ob das wohl jemals klappt (Probleme beim Datenabfluss für Office Pro Plus)?

Tipp von VGem-e vor 1 TagDatenschutz3 Kommentare

Servus Kollegen, siehe Aber wer setzt schon MS Office Pro Plus ein? Wie dann der Stand beim "normalen" MS ...

Windows 10

Macht Windows 10.1809 Probleme mit gemappten Netzlaufwerken (betrifft wohl insbes. AMD-Hardware und Trend Micro AV-Produkte)?

Tipp von VGem-e vor 1 TagWindows 103 Kommentare

Moin Kollegen, grad dazu gefunden und Hatten wir dies nicht bei früheren W10-Upgrades ebenfalls? Da bleibt nur, das Upgrade ...

Humor (lol)

Das neue Miniatur Wunderland OFFICIAL VIDEO - worlds largest model railway - railroad

Information von StefanKittel vor 2 TagenHumor (lol)2 Kommentare

Hallo, wer noch nie im Miniatur Wunderland war, sollte es dringend mal nachholen. Es gibt eine neues Video. Viele ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Gäste-WLAN durch DD-WRT AP nach einem MikroTik Routerboard
Frage von NukolarLAN, WAN, Wireless16 Kommentare

Hallo, wie der Titel schon sagt möchte ich gerne ein Gäste-WLAN innerhalb eines bestehenden LANs einrichten. Dass die Gäste ...

DSL, VDSL
DSL Monitoring Tool - Quick and dirty?
Frage von george44DSL, VDSL15 Kommentare

Liebe Gemeinde, ich suche ein einfaches und vor allem schnell zu installierendes Monitoring-Tool zur kontinuierlichen Dokumentation (nur) der Internetanbindung. ...

Exchange Server
Outlook findet Postfach nicht
Frage von MaximaxExchange Server11 Kommentare

Hallo, und zwar haben wir auf der Arbeit ein kleines (großes) Exchange 2016 Problem. Exchange meldete gestern, dass die ...

Informationsdienste
Probleme auf dem Server
Frage von LangeLangeInformationsdienste9 Kommentare

Hallo zusammen, ich betreibe die Seite Keine Werbelinks. In der Analyse stellen wir fest, dass die Ladezeit in der ...