Batch IF Befehl zum Abfragen eines einzelnen Wertes mit mehreren Werten in einer Variable...
Hey,
könnte mir vielleicht bitte jemand bei folgendem Problem einen Tipp oder eine Hilfestellung geben ???
Wäre super! Vielen Dank im voraus!
In einer Batch wird ein Übergabeparameter %1 geprüft:
IF %1 == "STICHWORT!" ( SET AUSWAHL=1 ) else ( SET AUSWAHL=0 )
Soweit so gut.
Problem ist jetzt nur das in %1 aber immer mehrere Wörter / eine längere Zeile übergeben wird...
z.B.
%1="STICHWORT! Hier ist der restliche Text"
oder einfach nur
%1="Hier ist nochmals ein anderer restlicher Text"
Meine Abfrage oben greift aber nur wenn %1 wirklich nur "STICHWORT!" enthält ...
Wie kann ich %1 trotzdem abfragen und richtig zurordnen obwohl mehrere Wörter enthalten sind ?
Vielen Dank für einen Tipp!
MFG Beatzler
könnte mir vielleicht bitte jemand bei folgendem Problem einen Tipp oder eine Hilfestellung geben ???
Wäre super! Vielen Dank im voraus!
In einer Batch wird ein Übergabeparameter %1 geprüft:
IF %1 == "STICHWORT!" ( SET AUSWAHL=1 ) else ( SET AUSWAHL=0 )
Soweit so gut.
Problem ist jetzt nur das in %1 aber immer mehrere Wörter / eine längere Zeile übergeben wird...
z.B.
%1="STICHWORT! Hier ist der restliche Text"
oder einfach nur
%1="Hier ist nochmals ein anderer restlicher Text"
Meine Abfrage oben greift aber nur wenn %1 wirklich nur "STICHWORT!" enthält ...
Wie kann ich %1 trotzdem abfragen und richtig zurordnen obwohl mehrere Wörter enthalten sind ?
Vielen Dank für einen Tipp!
MFG Beatzler
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 162407
Url: https://administrator.de/contentid/162407
Ausgedruckt am: 22.11.2024 um 19:11 Uhr
16 Kommentare
Neuester Kommentar
Hallo Beatazler!
liefert er folgende Ergebnisse
Um ev noch Unterschiede aufgrund der Groß-/Kleinschreibung auszuschließen, könntest Du "
Grüße
bastla
Dein Code oben ist nur Stichpunktartig oder?
Keineswegs - als etwas "verzierter" Batch "CheckParam.cmd"@echo off & setlocal
echo %1
echo %1|findstr "STICHWORT!">nul && SET "AUSWAHL=1" || SET "AUSWAHL=0"
echo %AUSWAHL%
D:\>CheckParam.cmd "STICHWORT! Hier ist der restliche Text"
"STICHWORT! Hier ist der restliche Text"
1
D:\>CheckParam.cmd "Hier ist nochmals ein anderer restlicher Text"
"Hier ist nochmals ein anderer restlicher Text"
0
findstr /i
" verwenden ...Grüße
bastla
Hallo Beatzler!
Das VBScript müsste eher so aussehen (ungetestet):
bzw, wenn die Rückgabe von 0 oder 1 genügt, auch so:
und der Aufruf könnte so erfolgen:
Grüße
bastla
Das VBScript müsste eher so aussehen (ungetestet):
If InStr(WScript.Arguments(0),WScript.Arguments(1))>0 Then WScript.Echo "Ausgabetext" Else WScript.Echo "Alternativtext"
WScript.Echo Abs(InStr(WScript.Arguments(0),WScript.Arguments(1))>0)
set "AUSWAHL="
for /f %%i in ('cscript //nologo script.vbs "%~1" "STICHWORT!"') do set "AUSWAHL=%%i"
if defined AUSWAHL echo %AUSWAHL% else echo Kein Rueckgabewert!
bastla
Hallo Beatzler!
Du übergibst dem Script den zu durchsuchenden Text (also den Batch-Parameter %1) und das Suchwort (im Beispiel "STICHWORT!") wie in der Zeile 2 des Batchbeispieles gezeigt - die beiden Scriptvarianten unterscheiden sich eigentlich nur dadurch, dass im ersten Fall die Rückgabewert als Text festgelegt werden (was allerdings auch im Batch per "
Grüße
bastla
Du übergibst dem Script den zu durchsuchenden Text (also den Batch-Parameter %1) und das Suchwort (im Beispiel "STICHWORT!") wie in der Zeile 2 des Batchbeispieles gezeigt - die beiden Scriptvarianten unterscheiden sich eigentlich nur dadurch, dass im ersten Fall die Rückgabewert als Text festgelegt werden (was allerdings auch im Batch per "
if
" erfolgen könnte) und im zweiten Ansatz immer 1 oder 0 als Ergebnis geliefert wird ...Grüße
bastla
Hallo Beatzler!
Wenn Du schon eine Liste der Fehler hast, kannst Du die doch in einer Textdatei hinterlegen - zB in der Form
und musst nur noch anhand der Nummer (im Beispiel als %1 übergeben) suchen - etwa:
Grüße
bastla
Wenn Du schon eine Liste der Fehler hast, kannst Du die doch in einer Textdatei hinterlegen - zB in der Form
Fehlernummer@Fehlerbeschreibung
@echo off & setlocal
set "Nr=%~1"
set "Liste=D:\Fehlerliste.txt"
set "Fehler="
for /f "tokens=1* delims=@" %%i in ('findstr /b "%Nr%@" "%Liste%"') do set "Fehler=%%j"
if defined Fehler (
echo Fehler Nr %Nr%: %Fehler%
) else (
echo Fehler Nr %Nr% nicht gefunden!
)
bastla
Hallo Beatzler!
Entspricht Dein Beispiel dem grundsätzlichen Aufbau des übergebenen Parameters (inkl der Sterne als Trennzeichen)? Wenn ja und daher die Fehlernummer immer an der selben Position (also zB wie oben als 2. Wort - gezählt anhand der Leerzeichen) steht, könntest Du sie so isolieren:
Grüße
bastla
P.S.:
Entspricht Dein Beispiel dem grundsätzlichen Aufbau des übergebenen Parameters (inkl der Sterne als Trennzeichen)? Wenn ja und daher die Fehlernummer immer an der selben Position (also zB wie oben als 2. Wort - gezählt anhand der Leerzeichen) steht, könntest Du sie so isolieren:
set "Nr="
for /f "tokens=2" %%i in ("%~1") do set "Nr=%%i"
if defined Nr echo Fehler Nr %Nr%
bastla
P.S.:
Kann man dir mal irgendwie was gutes tun ?
Danke für das Angebot - aber vielleicht kannst Du ja selbst einmal jemandem (womit auch immer) helfen ...