Batch For Befehl übergibt keine Variable
Ich habe ein cmd Script es soll einen Zeichenfolge in einer Textdatei suchen und mit Ja Nein antworten ob die Zeichenfolge gefunden wurde. PROBLEM es geht 1x und die VARIABLE behält dann immer den gleichen Wert
Hallo wer kann Helfen ?
SYSTEM: WKS Win7 Pro Deu
ich habe ein cmd Script es soll einen Zeichenfolge in einer Textdatei suchen und mit Ja Nein Antworten ob es die Zeichenfolge gefunden wurde PROBLEM unten beschrieben.
Als erstes ein Script was funktioniert läuft störungsfrei....
So und jetzt das Problem:
In einem anderen Script in einer Procedure geht das nicht!! die Variable enthält einen anderen wert
also.... echo zeigt den richtigen Wert an aber die Variable wird nicht gesetzt und bleibt auch bei den nächsten Ausführungen gleich.
Die Variable wird nicht übergeben es wird immer der alte Wert angezeigt es geht 1x danach gibt die Procedure immer
den Gleichen Wert raus abwohl echo den richtigen Wert anzeigt also auch außerhalb der Procedure.
OK echo zeigt richtigen Wert an
FOR /F "delims=" %%a IN ('FINDSTR /I /C:"%suche%" "tt.txt"') do echo Gefunden=%%a
NICHT OK Variable bekommt nur 1x den WERT und bleibt dann so
FOR /F "delims=" %%b IN ('FINDSTR /I /C:"%suche%" "tt.txt"') DO set "Gefunden=%%b"
Keine Ahnung woran das Liegt wer hat einen Rat
Thanks
[Edit Biber] Codeformatierung nachgezogen. [/Edit]
Hallo wer kann Helfen ?
SYSTEM: WKS Win7 Pro Deu
ich habe ein cmd Script es soll einen Zeichenfolge in einer Textdatei suchen und mit Ja Nein Antworten ob es die Zeichenfolge gefunden wurde PROBLEM unten beschrieben.
Als erstes ein Script was funktioniert läuft störungsfrei....
REM DIESES SCRIPT geht---------------------------------
echo off
set a=X
:anf
echo.
ECHO ++ Eingabe Suche +++++++++++++++++++++++++++++++++
set /p suche=Eingabe:
call :protest
echo Antwort: Gefunden %a%
if /I "%suche%"=="q" exit
goto anf
:protest
set a=
FOR /F "delims=" %%i IN ('findstr /I /C:"%suche%" "tt.txt"') do (
set Gefunden=%%i
echo i=%%i
)
IF NOT "%Gefunden%"=="" (
ECHO GEFUNDEN JA:
) ELSE (
ECHO GEFUNDEN NEIN:
)
GOTO :EOF
In einem anderen Script in einer Procedure geht das nicht!! die Variable enthält einen anderen wert
also.... echo zeigt den richtigen Wert an aber die Variable wird nicht gesetzt und bleibt auch bei den nächsten Ausführungen gleich.
Die Variable wird nicht übergeben es wird immer der alte Wert angezeigt es geht 1x danach gibt die Procedure immer
den Gleichen Wert raus abwohl echo den richtigen Wert anzeigt also auch außerhalb der Procedure.
OK echo zeigt richtigen Wert an
FOR /F "delims=" %%a IN ('FINDSTR /I /C:"%suche%" "tt.txt"') do echo Gefunden=%%a
NICHT OK Variable bekommt nur 1x den WERT und bleibt dann so
FOR /F "delims=" %%b IN ('FINDSTR /I /C:"%suche%" "tt.txt"') DO set "Gefunden=%%b"
Keine Ahnung woran das Liegt wer hat einen Rat
Thanks
[Edit Biber] Codeformatierung nachgezogen. [/Edit]
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 191272
Url: https://administrator.de/contentid/191272
Ausgedruckt am: 09.11.2024 um 01:11 Uhr
4 Kommentare
Neuester Kommentar
Hallo Viper-Berlin!
Das Stichwort ist (wieder einmal) "
Es stellt sich aber zusätzlich die Frage, ob es denn sinnvoll/notwendig ist, den Inhalt von zB "
Grüße
bastla
Das Stichwort ist (wieder einmal) "
delayedExpansion
" ...Es stellt sich aber zusätzlich die Frage, ob es denn sinnvoll/notwendig ist, den Inhalt von zB "
%%b
" einer anderen Variablen zuzuweisen und nicht gleich direkt weiter zu verarbeiten (ein Grund dafür könnte sein, dass ein Teilstring, der sich nicht per Delimiter erzeugen lässt, gebildet werden soll).Grüße
bastla
moin,
[OT]
zuerst dachte ich, das sieht aber... und dann sah ich:
tja pustekuchen.
@Biber: gibts eingentlich nen #RGC für wie baue ich eine Schleife, ohne das Tut des geehrten Friemlers vorher gelesen zu haben?
Oder ist der Herr von und zu copypaste der erbauer?
Hatte ich das nicht neulich noch irgendwo hingemalt?
[/OT]
Ich vermute, du solltest dir mal im klaren werden, wie eine Schleife funktioniert und wie die abgearbeitet wird.
Dazu wirst du hier mehr bereits geschriebene und sehr fundierte Texte finden, als ich graue Haare auf dem Kopf hab.
Gruß
[OT]
zuerst dachte ich, das sieht aber... und dann sah ich:
[Edit Biber] Codeformatierung nachgezogen. [/Edit]
tja pustekuchen.
@Biber: gibts eingentlich nen #RGC für wie baue ich eine Schleife, ohne das Tut des geehrten Friemlers vorher gelesen zu haben?
Oder ist der Herr von und zu copypaste der erbauer?
Hatte ich das nicht neulich noch irgendwo hingemalt?
[/OT]
Ich vermute, du solltest dir mal im klaren werden, wie eine Schleife funktioniert und wie die abgearbeitet wird.
Dazu wirst du hier mehr bereits geschriebene und sehr fundierte Texte finden, als ich graue Haare auf dem Kopf hab.
Gruß
Salue bastla,
Ich finde zeile 13 sehr passend, wobei ich mich frage ob die obere batch wirklich so funktioniert....
Dito zeile 2.
Wo wird die variable gefunden geleert?
@ viper-5000/berlin:
Schon weiter gekommen?
Gruss
Ich finde zeile 13 sehr passend, wobei ich mich frage ob die obere batch wirklich so funktioniert....
Dito zeile 2.
Wo wird die variable gefunden geleert?
@ viper-5000/berlin:
Schon weiter gekommen?
Gruss
moin,
Das mit der Zeile 13 ist mir ja garnet so aufgefallen, aber nur weil Zeile 09 so wirklich Sinnhaft ist?
Für so einen ersten Überblick hilft mir Batchcode erstellen, da ist schon interessant welche Variablen überhaupt Benutzt werden.
Warum läuft der Batch eigentlich ohne #toc-31114940522-13 Setlocal?
Für was wird denn die Schleife gebraucht? Möchtest Du Mit den gefunden Werten weiterarbeiten?
Find würde doch auch die Werte Finden:
Gruß Phil
Das mit der Zeile 13 ist mir ja garnet so aufgefallen, aber nur weil Zeile 09 so wirklich Sinnhaft ist?
Für so einen ersten Überblick hilft mir Batchcode erstellen, da ist schon interessant welche Variablen überhaupt Benutzt werden.
Warum läuft der Batch eigentlich ohne #toc-31114940522-13 Setlocal?
Für was wird denn die Schleife gebraucht? Möchtest Du Mit den gefunden Werten weiterarbeiten?
Find würde doch auch die Werte Finden:
@echo off
setlocal
:anf
set /P „suche=Eingabe: “
if not defined suche echo Ende mit [Q]uit &goto :anf
setlocal enabledelayedexpansion
if /i !suche! equ Q exit /b
endlocal
find “%suche%” “D:\Datei” >nul &&echo Gefunden wurde: && find “%suche%” “D:\Datei” ||echo Wert „%suche%“ nicht Gefunden!
Goto :anf
Gruß Phil