dani
Goto Top

Batch - Letzte Zeile auslesenUPDATE

Hallo zusammen,

ich habe hier einen Windows Server 2003 EE laufen. Dort läuft unter anderem auch der RIS-Dienst. Nun würde ich jede Art Änderung (auto. Softwareinstallation / Deinstallation) auf dem Client in einer Datei festgehalten (oeminfo.ini). Die Zeile sieht vom Aufbau her so aus:
Line1=Wurde autoamtisch installiert.

So nun wird z.B. wieder eine Software automatisch installiert. Dann soll der Batch die letzte Zeilt auslesen und aus der 1 eine 2 machen (halt immer + 1). Danach soll die Line2 eingefügt werden.

Gibt's da ne Möglichkeit??


[UPDATE]
So lese ich die letzte Zeile aus:
@echo off
:: Letzte Zeile in %Var% speichern
for /F "Tokens=*" %%i in (oeminfo.ini) do Set var=%%i  
Echo Letzte Zeile...: %var%

Gruß
Dani

Content-Key: 42420

Url: https://administrator.de/contentid/42420

Printed on: April 24, 2024 at 08:04 o'clock

Member: miniversum
miniversum Oct 17, 2006 at 19:31:47 (UTC)
Goto Top
Nur eine ungetestete Idee...

for /F "Tokens=1,2 delims==" %%i in (oeminfo.ini) do Set line=%%i & Set var=%%j
Echo Letzte Zeile...: %line%=%var%
set linenr=%line:~-1%
set /a linenr=linenr+1
Echo Nächste Zeile...: %line:~0,-1%%linenr%=%var%

miniversum
Member: Biber
Biber Oct 18, 2006 at 10:33:12 (UTC)
Goto Top
Moin Dani,

für eine einstellige "LfdNr" so wie von miniversum skizziert - sonst vielleicht mit einer der Varianten unten:

::------snipp NextLfdNrDemo.bat
:start
@echo off & setlocal enableDelayedExpansion
:: ---- hier kann die Variable %var% so wie oben gesetzt werden:
:: ---- for /F "Tokens=*" %%i in (oeminfo.ini) do Set var=%%i 
Echo DEMO ..folgendes wird in den Variablen %%var1%% und %%var2%% unterstellt:
set "var1=Line128=Hier soll der Präfix vor der Lfdnr fest verdrahtet immer gleich 'Line' sein."  
set "var2=Update437=Beispiel für einen anderen Text als 'Line' vor der LfdNr."  
Echo DEMO ...Gemeinsamkeit soll sein: Links vor dem Gleichheitszeichen ist "Text+lfdNr".  
(echo vorher:) & set var
REM Strategie a) 
REM Falls der der Text in "Text+lfdNr" immer "Line" ist....   
REM Für Strategie a) brauche ich KEIN EnableDelayedExpansion.
for /f "tokens=1* delims==Line" %%i in ("%var1%") do for /f %%a in ('Set /a %%i+1') do Set var1=Line%%a=%%j  
REM Strategie b)
REM ..ich weiß nicht, wie der Text in "Text+lfdNr" aussieht, aber lfdnr ist immer eine Zahl kleiner als z.B. 999  
for /f "delims==" %%x in ("%var2%") do for /l %%i in (1,1,999) do echo %%x|find "%%i">nul && set /a "lfdnr=%%i"  
for /f %%i in ('set /a lfdnr+1') do set var2=!var2:%lfdnr%=%%i!  
(echo nachher:) & set var

goto :eof
::------snapp NextLfdNrDemo.bat

Output:
>NextLfdNrDemo
DEMO ..folgendes wird in den Variablen %var1% und %var2% unterstellt:
DEMO ...Gemeinsamkeit soll sein: Links vor dem Gleichheitszeichen ist "Text+lfdNr".  
vorher:
var1=Line128=Hier soll der Präfix vor der Lfdnr fest verdrahtet imer gleich 'Line' sein.  
var2=Update437=Beispiel für einen anderen Text als 'Line' vor der LfdNr.  
nachher:
var1=Line129=Hier soll der Präfix vor der Lfdnr fest verdrahtet imer gleich 'Line' sein.  
var2=Update438=Beispiel für einen anderen Text als 'Line' vor der LfdNr.  

HTH Biber
Member: Dani
Dani Oct 18, 2006 at 18:21:30 (UTC)
Goto Top
Hi,
also ich danke euch beiden! Ihr seit einfach die besten!! face-smile


Gruß
Dani