BATCH Programmierung bestimme Daten auslesen?

2 Antworten

Hallo Paxcal199412,

spontan fallen mir 2 Möglichkeiten ein:

1.) Regular Expression (RegEx)
Dies wird in Batch zwar nicht direkt unterstützt, es gibt aber einen Umweg.
Hiermit kannst du sozusagen ein Muster erstellen und es werden nur Sachen ausgegeben, die deinem Muster entsprechen. Könntest also ein Muster erstellen, er dir nur Sachen ausgibt, die in Klammern stehen.

Vorteil: RegEx kann sehr oft gebraucht werden (und ist eine Methode die es in allen "größeren" Programmiersprachen gibt, da es sehr mächtig ist)

2.) Du kannst alles einlesen, und sobald du ein "[" entdeckst eine Variable z.B. "gefunden" auf "True" setzen.
Und falls "gefunden" auf "True" ist, gibst du alles aus.
Falls du ein "]" einliest, dann setzt du "gefunden" auf "False" und gibst damit alles zwischen den Klammern aus.

Grüße,
DataIsBeautiful

anion  19.10.2016, 02:34

nabend DataIsBeautiful!
regex in batch zu benutzen ist so ohne weiteres nicht möglich. das erfordert schon externe tools, die man, wenn man sich dafür entscheidet, auch einfach nur aufruft. das ist aber vielleicht für diesen anwendungsfall etwas mit kanonen auf spatzen geschossen.


0
Pascal199412 
Fragesteller
 19.10.2016, 07:04

Genau das mein ich auch .. Kannst du vllt mal die 2. Option etwas näher erläutern? Hast du vllt sogar ein Syntax, wie ich das in die for /f schleife einbauen kann?
Ich muss natürlich dazu sagen, ich bin noch neu in der Batch Programmiererei und lerne es natürlich noch :)

0

Schau mal so :

@echo off
REM *** ListIniSectionNames.cmd ***
setlocal enabledelayedexpansion

for /f "usebackq eol=; tokens=1,2* delims==" %%K in (%*) do (
set key=%%~K
if "!key:~0,1!" == "[" (
if "!key:~-1,1!" == "]" (
set section=!key:~1,-1!
echo section
)
) else (
set value=%%~L
)
)

Hier hast Du ein Batch-Gerüst, mit dem Du alle INI-Werte (außer Kommentare) auslesen kannst. Hiermit werden NUR die Section-Names ohne Klammern aufgelistet.