
91183
08.02.2011 um 06:00:13 Uhr
Text nach einem Schlüsselwort als Variable setzen
Hallo!
Ich bin es schon wieder.
Diese Frage bezieht sich auf eine andere Frage / einen anderen Beitrag von mir.
Ich bin allerdings der Meinung, dass diese Frage / dieses Problem einen
eigenen Beitrag verdient, da sie / es doch leicht abweicht und andere Ergebnisse liefern soll.
Letztes Wort der aktuellsten Datei als Variable setzen
Ich würde gerne wissen, was ich an dem folgenden Skript abändern muss,
damit dieses nicht mehr das letzte Wort in der letzten Zeile als Variable setzt,
sondern stattdessen in der letzten Zeile der Datei nach einem Schlüsselwort sucht
(Beispiel: "$$$start") und alle Wörter und Leerzeichen die danach folgen als Variable übernimmt.
Einzige Ausnahme hierbei müsste das Leerzeichen nach dem Schlüsselwort sein.
Erstmal das zu ändernde Skript (noch mal DANKE an bastla):
Ich schätze mal, es müsste nur Zeile 8 geändert werden. Aber ich habe keine Ahnung in was.
Auszulesende Datei als Beispiel: "Idee_20110206_221259"
Ablauf (quasi fast genau wie bei dem anderen Beitrag)
Batch-Datei sucht sich die letzte Beschriebene Zeile (hier Zeile 14) und überprüft diese nach dem Wort "$$$start".
Sofern dieses vorhanden ist, werden alle Wörter und Zeichen (Ausnahme: das Leerzeichen nach dem Schlüsselwort)
nach "$$$start" als Variable gesetzt. Also sollte die Variable (%var%) in diesem Beispiel so aussehen: "%var%=chkdsl C: /F"
Danke im Voraus und entschuldigt bitte, dass ich Euch schon wieder Arbeit mache.
Gruß Xeno
Ich bin es schon wieder.
Diese Frage bezieht sich auf eine andere Frage / einen anderen Beitrag von mir.
Ich bin allerdings der Meinung, dass diese Frage / dieses Problem einen
eigenen Beitrag verdient, da sie / es doch leicht abweicht und andere Ergebnisse liefern soll.
Letztes Wort der aktuellsten Datei als Variable setzen
Ich würde gerne wissen, was ich an dem folgenden Skript abändern muss,
damit dieses nicht mehr das letzte Wort in der letzten Zeile als Variable setzt,
sondern stattdessen in der letzten Zeile der Datei nach einem Schlüsselwort sucht
(Beispiel: "$$$start") und alle Wörter und Leerzeichen die danach folgen als Variable übernimmt.
Einzige Ausnahme hierbei müsste das Leerzeichen nach dem Schlüsselwort sein.
Erstmal das zu ändernde Skript (noch mal DANKE an bastla):
@echo off & setlocal
set "pfad=%userprofile%\eigene dateien\logs\"
pushd "%pfad%"
for /f "delims=" %%i in ('dir /b /on "Idee*.txt" 2^>nul') do set "NeuesteDatei=%%i"
for /f "delims=" %%i in ('type "%NeuesteDatei%"') do set "Zeile=%%i"
setlocal enabledelayedexpansion
for %%i in (!Zeile!) do set "Letztes=%%i"
endlocal & set "Letztes=%Letztes%"
popd
echo %Letztes%
Ich schätze mal, es müsste nur Zeile 8 geändert werden. Aber ich habe keine Ahnung in was.
Auszulesende Datei als Beispiel: "Idee_20110206_221259"
---------------------------------------------------------------
Kanal ID: (('id', 1884537),)
Kanal Name: Kanal246
Benutzername: Username
Gestartet am / um: 2011.02.06 22:12:59
---------------------------------------------------------------
[ 2011.02.06 22:14:19 ] Programm > Text1
[ 2011.02.06 22:15:06 ] Programm > Text2
[ 2011.02.06 22:15:11 ] User > U-Text1
[ 2011.02.06 22:15:15 ] User > $$$start chkdsk C: /F
Ablauf (quasi fast genau wie bei dem anderen Beitrag)
Batch-Datei sucht sich die letzte Beschriebene Zeile (hier Zeile 14) und überprüft diese nach dem Wort "$$$start".
Sofern dieses vorhanden ist, werden alle Wörter und Zeichen (Ausnahme: das Leerzeichen nach dem Schlüsselwort)
nach "$$$start" als Variable gesetzt. Also sollte die Variable (%var%) in diesem Beispiel so aussehen: "%var%=chkdsl C: /F"
Danke im Voraus und entschuldigt bitte, dass ich Euch schon wieder Arbeit mache.
Gruß Xeno
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 160334
Url: https://administrator.de/forum/text-nach-einem-schluesselwort-als-variable-setzen-160334.html
Ausgedruckt am: 05.05.2025 um 08:05 Uhr
6 Kommentare
Neuester Kommentar
Hallo Xeno--!
Versuch es ab Zeile 7 so :
Für den Fall, dass es den Suchstring nicht in der letzten Zeile gibt, musst Du noch die Zeile 2 Deinen Bedürfnissen anpassen ...
Grüße
bastla
P.S.:

Versuch es ab Zeile 7 so :
set "Such=$$$start"
echo "%Zeile%"|findstr "%Such%">nul || goto :NichtVorhanden
setlocal enabledelayedexpansion
set "var=!Zeile:*%Such% =!"
endlocal & set "var=%var%"
popd
echo %var%
Grüße
bastla
P.S.:
... entschuldigt bitte, dass ich Euch schon wieder Arbeit mache. 
Wir suchen doch richtiggehend danach ...
Hallo Xeno--!
Das Auslesen würde ich jeweils mit "
Etwas kontrollierter wäre:
Nach dem selben Schema:
oder
[Edit] Das "Sicherheits-
Grüße
bastla
P.S.: Deine "Romane" lese ich gerne
- insbesondere im Vergleich zu vielen anderen "Problemstellungen" hier, bei denen nach der dritten Nachfrage noch immer mehr im Nebel als bereits erkennbar ist ...
Das Auslesen würde ich jeweils mit "
findstr
" erledigen - also zB:set "Conf=D:\Idee_config.txt"
for /f "tokens=1*" %%i in ('findstr /b "Pfad" "%Conf%"') do set "Pfad=%%j"
set "Conf=D:\Idee_config.txt"
set "Pfad="
for /f "tokens=1*" %%i in ('findstr /b "Pfad" "%Conf%"') do set "Pfad=%%j"
if not defined Pfad echo Pfad nicht gefunden & goto :ConfigFehler
for /f "tokens=1*" %%i in ('findstr /b /L "%LetztesWort%" "%Conf%"') do %%j
set "Aktion="
for /f "tokens=1*" %%i in ('findstr /b /L "%LetztesWort%" "%Conf%"') do set "Aktion=%%j"
if not defined Aktion ...
%Aktion%
/L
" (damit "$" auf keinen Fall als Zeilenende-Kennzeichen interpretiert wird, braucht's wohl nicht - wenn's ja eh vorneweg steht) ... [/Edit]Grüße
bastla
P.S.: Deine "Romane" lese ich gerne
Hallo Xeno--!
Kannst Du so machen ...
Alternative: Da ja die drei "$" als Kennzeichen dienen können, einfach vorweg danach filtern:
Der Übersichtlichkeit halber könntest Du natürlich auch für "$$$" eine Variable verwenden.
Grüße
bastla
P.S.: "
)
Kannst Du so machen ...
Alternative: Da ja die drei "$" als Kennzeichen dienen können, einfach vorweg danach filtern:
for /f "tokens=1*" %%i in ('findstr /b /L "$$$" "%Config%"^|findstr /b "%Letztes%"') do set "Aktion=%%j"
Grüße
bastla
P.S.: "
exit
" ist für mich nur zusammen mit einem "/b
" sinnvoll - ansonsten tut's eigentlich auch ein "goto :eof
" (und das schließt mir beim Testen das CMD-Fenster nicht