Frage:
Frage zu BATCH Dateien?
anonymous
2012-04-21 15:07:09 UTC
Hallo Yahoo!-Nutzer,
ist es möglich aus einer *.txt Datei die Zeilen zwischen zwei Text-Strings auszulesen?
Zum Beispiel:

Inhalt der *.txt:

bla bli blubb
blub bla
start
hallo
isa 245
end
lala
blub bla

ist es dann möglich alles zwischen start und end, inclusive start und end, also:
start
hallo
isa 245
end
in eine variable einzulesen?
Wenn ja, wie?
MfG
Janek

P.S.: Wie gesagt alles mithilfe von einer Batch-Datei, also datenendung *.bat :-)
Drei antworten:
?
2012-04-23 02:30:53 UTC
Der Inhalt der Batch-Datei steht zwischen den "#####" Zeilen.



#####

@ECHO OFF

SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION

SET anz=nein

FOR /F "tokens=*" %%r IN (Text.txt) DO (

IF "%%r"=="start" SET anz=ja

IF !anz!==ja ECHO %%r

IF "%%r"=="end" SET anz=nein

)

ENDLOCAL

#####



Die Variable "anz" steht für Anzeige und wird durch die Zeile mit dem Wort "start" aktiviert und mit der nächsten Zeile mit dem Wort "end" deaktivert. Wird die "end" Zeile nicht gefunden, wird alles bis zum Dateiende angezeigt.



Die beiden Wörter "start" und "end" müssen in der jeweiligen Zeile alleine drinstehen - auch keine Leerzeichen.



Der FOR-Befehl mit "/F "tokens=*" liest die komplette Zeile in die Variable "%%r" ein. (Innerhalb der Batchdatei sind zwei Prozentzeichen notwendig.)



Die Variable "!anz!" (zwischen den Ausrufezeichen steht die Variable) muss hier so angegeben werden, da hier die verzögerte Variableauflösung notwendig ist. (Siehe auch SET /? - Befehl)
?
2012-04-22 00:19:17 UTC
ich kann dir bei bedarf den dosbefehl kurz schreiben 10 minuten sache !



bei bedarf kurze pm an supervisor@eurofrank.com
Beggs
2012-04-21 22:43:38 UTC
Also mit reinen Batch-Kommandos hast du da schlechte Karten. Es ist aber möglich eigene Programme zu schreiben, z.B. in Basic und daraus eine .COM Datei zu generieren. Dieses Programm kann dann als Kommando innerhalb des Batchablaufs wie ein natives Batch-Kommando verwendet werden und es können Ergebniswerte an Batch-Parameter (Variablen) zurückgegeben werden. Hierzu aber noch vernünftige Dokumentationen und Compiler zu finden wird sicherlich schwer sein, da das ganze Batch-Thema doch schon einige Jahre auf dem Buckel hat.



Die eigentliche Frage hier ist aber, warum du das Problem nicht gleich mit einem Hochsprachen-Programm löst, anstatt über die Batch-Schnittstelle. Oder über eine Skriptsprache wie z.B. REXX. Die ist sehr viel mächtiger als das antiquierte Batch von Windows/DOS. Hierzu sollte noch genügend Dokumentation bei Mircosoft oder der IBM zur Verfügung stehen.


Dieser Inhalt wurde ursprünglich auf Y! Answers veröffentlicht, einer Q&A-Website, die 2021 eingestellt wurde.
Loading...