Set name gleich findstr-Ausgabe. Wie Kriege ich das am besten hin... set oder for?
Hallo
Also habe mich durch das FOR tutorial gelesen aber habe einige Abschnitte wohl nicht ganz verstanden.
Ich möchte dass das Ergebnis von findstr als Variable gespeichert wird und wenn die Variable nicht mit dem eingegebenen übereinstimmt nach :a weiterleiten sonst nach :b
Erst mal SOrry für das zuspamen des Batch/Shell-Bereichs aber es hat mich grad gepackt und da ich an einem für mich schon etwas grösseren Projekt intensiv arbeite kommen Mehrere Fragen nacheinander auf.
Also ich versuche, dass das Ergebnis des findstr Befehls als Variable, nennen wir sie %V1%, gespeichert wird. Dies kann zum Beispiel sein: NAME = 12.34 Euro. %V1% soll dann mit dem bei der Abfrage eingegebenen Daten verglichen werden und wenn diese nicht übereinstimmen soll darauf aufmerksam gemacht werden.
Mittels cmd-Fenster habe ich folgendes Probiert:
Wenn ich dies jedoch mittels Batch ausführe erhalte ich als "echo %V1%" folgende Ausgabe:
Ich versteh nun nicht ganz warum es im CMD-Fenster mit einzeleingabe funktioniert jedoch nicht mittels Batch
Wie schon geschrieben habe ich mir mal das FOR-Tutorial angesehen und hab mal was gebastelt.
Jedoch könnte ich da auch gleich exit eingeben ;)
Dies habe ich aus dem Tutorial abgeleitet in welchem dies so aufgeführt ist:
Dies ist das Versuchsscript in welchem ich die Funktion prüfe:
Danke schonmals für eure Hilfe
Also habe mich durch das FOR tutorial gelesen aber habe einige Abschnitte wohl nicht ganz verstanden.
Ich möchte dass das Ergebnis von findstr als Variable gespeichert wird und wenn die Variable nicht mit dem eingegebenen übereinstimmt nach :a weiterleiten sonst nach :b
Erst mal SOrry für das zuspamen des Batch/Shell-Bereichs aber es hat mich grad gepackt und da ich an einem für mich schon etwas grösseren Projekt intensiv arbeite kommen Mehrere Fragen nacheinander auf.
Also ich versuche, dass das Ergebnis des findstr Befehls als Variable, nennen wir sie %V1%, gespeichert wird. Dies kann zum Beispiel sein: NAME = 12.34 Euro. %V1% soll dann mit dem bei der Abfrage eingegebenen Daten verglichen werden und wenn diese nicht übereinstimmen soll darauf aufmerksam gemacht werden.
Mittels cmd-Fenster habe ich folgendes Probiert:
set zeile=(findstr %name% "database.txt")
%zeile%
Kohlenstoff = 12.05 g/mol
Wenn ich dies jedoch mittels Batch ausführe erhalte ich als "echo %V1%" folgende Ausgabe:
findstr NAME C:\Dokumente und Einstellungen\admin\Desktop\BATCH\database.txt
Ich versteh nun nicht ganz warum es im CMD-Fenster mit einzeleingabe funktioniert jedoch nicht mittels Batch
Wie schon geschrieben habe ich mir mal das FOR-Tutorial angesehen und hab mal was gebastelt.
for /f %%zeile in (findstr %name% %cd%\database.txt) do goto :1
Jedoch könnte ich da auch gleich exit eingeben ;)
Dies habe ich aus dem Tutorial abgeleitet in welchem dies so aufgeführt ist:
for /f %%c in ('echo %Number%^|findstr "[^0-9]"') do goto :InputNumber
Dies ist das Versuchsscript in welchem ich die Funktion prüfe:
@echo off
:START
set name=Kohlenstoff & set "mcg=12" & set "mcgnk=05"
echo %name% %mcg%.%mcgnk%
set zeile=(findstr %name% %cd%\database.txt)
echo zeile = %zeile%
pause >NUL
if findstr %name% %cd%\database.txt == %name% %mcg%.%mcgnk% g/mol echo Geschafft & goto START
echo NOPE
pause >NUL
goto START
Danke schonmals für eure Hilfe
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 204658
Url: https://administrator.de/contentid/204658
Ausgedruckt am: 05.11.2024 um 12:11 Uhr
7 Kommentare
Neuester Kommentar
Hallo Apop85,
geht (wie meistens in Batch) mit einer Forschleife:
.. wenn "database.txt" so aufgebaut ist:
Welches Tutorial meinst du?
Gruss!
geht (wie meistens in Batch) mit einer Forschleife:
for /f "tokens=1-3 delims=. " %%i in ('findstr "%name%" "%cd%\database.txt"') do set "DBname=%%i"& set "DBmcg=%%j"& set "DBmcgnk=%%k"
if "%name%"=="%DBname%" (echo %name% found) else echo %name% not found
.. wenn "database.txt" so aufgebaut ist:
name mcg.mcgnk
Welches Tutorial meinst du?
Gruss!
Hallo Apop85,
damit meine Schleife richtig funktioniert, muss noch "-" bei den Tokentrennern eingefügt werden:
Wenn du mehr über Forschleifen wissen willst, brauchst du unbedingt dieses Tutorial. Da ist alles prima erklärt
Gruss!
damit meine Schleife richtig funktioniert, muss noch "-" bei den Tokentrennern eingefügt werden:
for /f "tokens=1-3 delims=.- " %%i in ('findstr "%name%" "%cd%\database.txt"') do set "DBname=%%i"& set "DBmcg=%%j"& set "DBmcgnk=%%k"
if "%name%"=="%DBname%" (echo %name% found) else echo %name% not found
Wenn du mehr über Forschleifen wissen willst, brauchst du unbedingt dieses Tutorial. Da ist alles prima erklärt
Gruss!
Hallo Apop,
wenn du die Tokentrenner aus der Schleife wirfst, kannst du auch die "tokens=1-3" rausschmeissen: du wirst ohne Trenner keine erhalten
Das verstehe ich nicht. ME sind doppelte Datensätze in einer Datenbank eher Mist.
Gruss!
wenn du die Tokentrenner aus der Schleife wirfst, kannst du auch die "tokens=1-3" rausschmeissen: du wirst ohne Trenner keine erhalten
Zitat von @Apop85:
Noch cooler wäre wenn zwei identische Zeilen in der Datenbank existieren müssen damit der Wert automatisch
Noch cooler wäre wenn zwei identische Zeilen in der Datenbank existieren müssen damit der Wert automatisch
Das verstehe ich nicht. ME sind doppelte Datensätze in einer Datenbank eher Mist.
Gruss!