Batch Zeichen Begrenzung umgehen
Guten Morgen,
bastla hat mir schon mit seinem Code geholfen (https://www.administrator.de/index.php?content=178956#727993). Allerdings habe ich noch eine Zusatzfrage, die ich jetzt als zusätzlen Thread eröffne, in der Hoffnung, dass das so ok ist!
bastla hat mir schon mit seinem Code geholfen (https://www.administrator.de/index.php?content=178956#727993). Allerdings habe ich noch eine Zusatzfrage, die ich jetzt als zusätzlen Thread eröffne, in der Hoffnung, dass das so ok ist!
> Zitat von @bastla:
> Eine Suchschleife lässt sich auch für mehrere Suchbegriffe zusammenfassen - etwa:
>
Guten Tag,
zum (super) Code von bastla möchte ich gerne noch wissen, sie sich die Schleife um weitere Suchbegriffe (außerhalb der
Begrenzung ca. 2000/8000 Zeichen "MS: Befehlszeile maximal 2.047 bzw. 8.191 Zeichen") erweitern läßt?
Im Sinne von, wie eine zweite und dritte Schleife eingefügt werden kann...
OKIDOKI
> Eine Suchschleife lässt sich auch für mehrere Suchbegriffe zusammenfassen - etwa:
>
1
2
3
4
5
2
3
4
5
set "Gefunden="
> > for %%i in (321asdf qwerqwe sonstnochwas) do findstr /x "%%i" "suche.txt">nul && set
> > "Gefunden=True"
> > if defined Gefunden echo YES
> >
Guten Tag,
zum (super) Code von bastla möchte ich gerne noch wissen, sie sich die Schleife um weitere Suchbegriffe (außerhalb der
Begrenzung ca. 2000/8000 Zeichen "MS: Befehlszeile maximal 2.047 bzw. 8.191 Zeichen") erweitern läßt?
Im Sinne von, wie eine zweite und dritte Schleife eingefügt werden kann...
OKIDOKI
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 179515
Url: https://administrator.de/forum/batch-zeichen-begrenzung-umgehen-179515.html
Ausgedruckt am: 13.04.2025 um 09:04 Uhr
8 Kommentare
Neuester Kommentar
Moin bastla und OKIDOKI,
Was spricht denn dagegen, am Ende deines Codes ein goto :EOF einzufügen.
Danach kommen Zeile für Zeile deine ganzen Suchbegriffe in den Batch hinein.
Somit hast Du auf keinen Fall eine extra Textdatei.
Deine Suchzeile schreibst du dann etwas um:
[Edit]
Ein Temporäre Vergeichsdatei zu erstellen wäre etwas Performanter und sicherer.
codepagewechsel eingefügt
[Edit]
Gruß Phil
Was spricht denn dagegen, am Ende deines Codes ein goto :EOF einzufügen.
Danach kommen Zeile für Zeile deine ganzen Suchbegriffe in den Batch hinein.
Somit hast Du auf keinen Fall eine extra Textdatei.
Deine Suchzeile schreibst du dann etwas um:
1
2
3
4
2
3
4
for /f "delims=:" %%i in ('findstr /n /i /x /c:"goto :eof" "%~f0"') do set /a Skip =%%i
chcp 1252 >nul
for /f "skip=%skip% usebackq delims=" %%i in ("%~f0") do findstr /x "%%i" "suche.txt">nul && set "Gefunden=True"
chcp 850 >nul
Ein Temporäre Vergeichsdatei zu erstellen wäre etwas Performanter und sicherer.
codepagewechsel eingefügt
[Edit]
Gruß Phil
Dein Batch sieht nur als Beispiel jetzt so aus:
Deine Suchbegriffe kommen Einzeln je Weitere Zeile unter das letzte goto :eof.
zur Erklärung:
Die erste For setzt die Zeilennummer des zuletzt gefundenen "goto :eof" als Skip.
Die zweite Forschleife gibt Dir alle Folgenden Zeilen der Batch nacheinander an Findstr aus (ohne Begrenzung).
Gruß Phil
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
@echo off&setlocal
set "Gefunden="
for /f "delims=:" %%i in ('findstr /n /i /x /c:"goto :eof" "%~f0"') do set /a Skip =%%i
chcp 1252 >nul
for /f "skip=%skip% usebackq delims=" %%i in ("%~f0") do findstr /x "%%i" "suche.txt">nul && set "Gefunden=True"
chcp 850 >nul
if defined gefunden echo Yes
rem hier ist noch viel mehr BatchNutzCode
echo Ende der Batch nächste Zeile
goto :eof
zur Erklärung:
Die erste For setzt die Zeilennummer des zuletzt gefundenen "goto :eof" als Skip.
Die zweite Forschleife gibt Dir alle Folgenden Zeilen der Batch nacheinander an Findstr aus (ohne Begrenzung).
Gruß Phil
Hallo OKIDOKI!
Grüße
bastla
Nach jeder Schleife würde ich dann vermutlich die Abfrage nach True machen und die Schleife erneut setzen, oder?
Das würde den Ablauf beschleunigen - Du kannst das aber auch nur ein einziges Mal nach allen Schleifen durchführen, da wie gesagt, der Schalter vorweg "ausgeschaltet" und beim ersten (und jedem weiteren) Fund "eingeschaltet" wird (und danach auch bleibt) - insofern wäre das eine "Gesamtabfrage" (oder was meintest Du damit?)Grüße
bastla
Hallo PH!
Ich habe Derartiges (in Anlehnung an das "Urzeit-Basic-DATA" auch schon so umgesetzt:
Die DATA-Zeilen können dabei an beliebiger Stelle im Batch stehen ...
Grüße
bastla
Ich habe Derartiges (in Anlehnung an das "Urzeit-Basic-DATA" auch schon so umgesetzt:
1
2
3
4
5
6
7
2
3
4
5
6
7
@echo off & setlocal
::DATA#Suchbegriff1 Suchbegriff2 Suchbegriff3
::DATA#Suchbegriff4 Suchbegriff5 Suchbegriff6
set "Gefunden="
for /f "tokens=1* delims=#" %%a in ('findstr /b "::DATA#" "%~0"') do for %%i in (%%b) do findstr /x "%%i" "suche.txt">nul && set "Gefunden=True"
if defined Gefunden echo Yes
Grüße
bastla