1.7k Aufrufe
Gefragt in Skripte(PHP,ASP,Perl...) von worm Einsteiger_in (3 Punkte)
Hallo zusammen

Ich möcht in einem Batch eine bestimmte Zeichenfolge aus einer Textdatei auslesen und in eine Variable speichern...

In der Textdatei steht folgende Zeile:

OBJ_Driver Software1002110_Servername

Die Zahl 1002110 entspricht der Software-Version, die Installiert ist ... und genau diese möchte ich in die Variable %_SWVersion% speichern, um sie später wieder zu verwenden.

Weiss jemand, wie ich das in einer .BAT-Datei machen kann? Unter UNIX wär's ja kein Problem, aber unter Windows hab ich keine Ahnung, wie das gehen soll.

Besten Dank schonmal im Voraus für eure Hilfe!

Gruss Rolf

2 Antworten

0 Punkte
Beantwortet von batti-batch Einsteiger_in (81 Punkte)
Hallo Rolf,


diese Aufgabe ist mit einer Batch ganz einfach zu lösen.
Innerhalb einer FOR-Schleife mit FINDSTR nach der Zeichenfolge suchen und diese einer Variablen zuweisen.

Die Zuweisungen zu den Variablen werden wie immer im SET-Block vorgenommen.

In meinem Programm wird am Ende der Wert der Variablen auf dem Bildschirm ausgegeben. Hier könnte sich eine weitere Verarbeitung anschließen. Es ist sicher nicht verkehrt, eine Fehlerbehandlung vorzusehen, falls die Datei nicht existiert oder die Zeichenfolge nicht gefunden wird.

Hier also das Programm:

@ECHO off
SETLOCAL


REM
REM Testprogramm
REM Finden einer Zeichenfolge in einer Textdatei
REM und diese dbanschliessend einer Variable zuweisen

REM https://supportnet.de/t/2238376
REM
REM (c) batti-batch 06/2009
REM
REM getestet unter Windows 2000


REM ************************ SET-Block Beginn ************************

SET "quell_datei=Laufwerk, Pfad und Name der txt-Datei"

SET "suchzeichenfolge=OBJ_Driver Software1002110_Servername"

REM ************************ SET-Block Ende **************************

REM Suchen der Zeichenfolge in der Quelldatei
FOR /f "delims=" %%i IN ('FINDSTR /i /c:"%suchzeichenfolge%" "%quell_datei%" ') DO (

REM Gefundene Zeichenfolge
REM der Variable zuweisen
SET "_SWVersion=%%i"

)

REM Ausgabe des Variablenwertes
ECHO %_SWVersion%


Viel Spaß beim Testen.

Herzliche Grüße
batti-batch
0 Punkte
Beantwortet von
Hmm, der Sinn des obigen Konstrukts erschließt sich mir nicht ganz....
Das ganze könnte man schlicht abkürzen mit

SET _SWVersion = OBJ_Driver Software1002110_Servername

Was ist dabei gewonnen? Wozu die Suche, wenn der Variablen dann doch nur die schon bekannte Suchzeichenfolge zugewiesen wird?

Unter der Voraussetzung, daß die Zeile immer mit genau "OBJ_Driver Software" beginnt und danach genau 7 Zeichen für die Version kommen, dann hätte ich folgenden Vorschlag (für WinXP):
@echo off
setlocal
for /f "delims=" %%i in ('find /i "OBJ_Driver Software" "Textdatei.txt"') do set DriverVer=%%i
set DriverVer=%DriverVer:~19,7%
echo Version: %DriverVer%

John Yossarian
...