Platzhalter in Batchdatei?
Ich wollte fragen ob es in Batch generell so etwas wie einen Platzhalter gibt (z.B.*,?,_…)
Ich bräuchte ihn für ein eine zeile die bei einer Zufallszahl (%random%) herausfindet ob die Zahl auf 5 endet, also in etwa so:
if %zahl%==*5 goto 5
if not %zahl%==*5 goto nein
Ich bräuchte aber direkt so etwas wie einen Platzhalter,da ich den wahrscheinlich noch öfter brauchen werde.
Ich hoffe ich hab alles wichtige erwähnt, beantworte auch gerne fragen und bedanke mich schonmal für Hilfe
PS: Bin neu hier...
Ich bräuchte ihn für ein eine zeile die bei einer Zufallszahl (%random%) herausfindet ob die Zahl auf 5 endet, also in etwa so:
if %zahl%==*5 goto 5
if not %zahl%==*5 goto nein
Ich bräuchte aber direkt so etwas wie einen Platzhalter,da ich den wahrscheinlich noch öfter brauchen werde.
Ich hoffe ich hab alles wichtige erwähnt, beantworte auch gerne fragen und bedanke mich schonmal für Hilfe
PS: Bin neu hier...
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 212031
Url: https://administrator.de/contentid/212031
Ausgedruckt am: 26.11.2024 um 08:11 Uhr
6 Kommentare
Neuester Kommentar
Hallo gr4v3l, willkommen im Forum.
Einen generellen Platzhalter gibt es nicht. So etwas findest du unter Umständen bei Befehlen, die für Arbeiten im Dateisystem bestimmt sind. Für IF Anweisungen gibt es das nicht.
Es gibt mehrere Möglichkeiten für ein Workaround. Die einfachste in deinem Fall ist Stringmanipulation. Schau dir hierzu die Hilfe zu SET an.
Das letzte Zeichen in der Variablen wird mit 5 verglichen.
Grüße
rubberman
Einen generellen Platzhalter gibt es nicht. So etwas findest du unter Umständen bei Befehlen, die für Arbeiten im Dateisystem bestimmt sind. Für IF Anweisungen gibt es das nicht.
Es gibt mehrere Möglichkeiten für ein Workaround. Die einfachste in deinem Fall ist Stringmanipulation. Schau dir hierzu die Hilfe zu SET an.
if %zahl:~-1%==5 goto 5
Grüße
rubberman
Moin gr4v3l,
das ist doch hoffentlich nur der Plan B, über einen Stringvergleich feststellen zu wollen, ob eine Zahl auf 5 endet???
Damals, als es noch keine Smartphones leichter als 3kg und Clouds nur ohne Elektronik gab, da haben wir es in etwa so gerechnet:
Nur so als Anregung..
P.S. Willkommen im Forum.
Grüße
Biber
das ist doch hoffentlich nur der Plan B, über einen Stringvergleich feststellen zu wollen, ob eine Zahl auf 5 endet???
Damals, als es noch keine Smartphones leichter als 3kg und Clouds nur ohne Elektronik gab, da haben wir es in etwa so gerechnet:
> Set /a zahl=7265
> set /a rest=zahl % 10 %5
> IF %rest% EQU 0 @echo Zahl %zahl% endet auf 5, denn 5 modulo 5 ergab 0
Zahl 7265 endet auf 5, denn 5 modulo 5 ergab 0
Nur so als Anregung..
P.S. Willkommen im Forum.
Grüße
Biber
Hallo Biber,
naja, der Plan B sollte meiner Meinung nach ein Plan B sein, weil die Zahl (laut gr4v3l) eine Zufallszahl ist und man diese von vorn herein (mit Modulo) auf einen bestimmten Wertebereich trimmt um damit zu arbeiten. Aber dazu würde man wieder mal die berühmte Glaskugel brauchen.
Warum ich mich für Stringmanipulation entschieden habe? Ganz einfach, Modulo schlägt fehl: 10 / 5 = 2 Rest 0. Bekanntlich endet 10 aber nicht auf 5. Dein vorhergehendes Modulo 10 ändert daran nie das Geringste: 10 / 10 = 1 Rest 0 / 5 = 0 Rest 0.
Ein einfaches Modulo 10 wäre es gewesen, anschließend auf Ergebnis 5 prüfen. Braucht aber das zusätzliche SET /A mit der Hilfsvariablen, wobei das Ergebnis das Gleiche ist wie bei meinem Vorschlag.
Der Vergleich würde übrigens auch bei mir immer noch numerisch erfolgen (mit Operator EQU statt ==), da der resultierende String numerisch ist (auch wenn das nichts zur Sache tut, solange man auf Gleichheit prüft ).
Grüße
rubberman
naja, der Plan B sollte meiner Meinung nach ein Plan B sein, weil die Zahl (laut gr4v3l) eine Zufallszahl ist und man diese von vorn herein (mit Modulo) auf einen bestimmten Wertebereich trimmt um damit zu arbeiten. Aber dazu würde man wieder mal die berühmte Glaskugel brauchen.
Warum ich mich für Stringmanipulation entschieden habe? Ganz einfach, Modulo schlägt fehl: 10 / 5 = 2 Rest 0. Bekanntlich endet 10 aber nicht auf 5. Dein vorhergehendes Modulo 10 ändert daran nie das Geringste: 10 / 10 = 1 Rest 0 / 5 = 0 Rest 0.
Ein einfaches Modulo 10 wäre es gewesen, anschließend auf Ergebnis 5 prüfen. Braucht aber das zusätzliche SET /A mit der Hilfsvariablen, wobei das Ergebnis das Gleiche ist wie bei meinem Vorschlag.
Der Vergleich würde übrigens auch bei mir immer noch numerisch erfolgen (mit Operator EQU statt ==), da der resultierende String numerisch ist (auch wenn das nichts zur Sache tut, solange man auf Gleichheit prüft ).
Grüße
rubberman
Moin rubberman,
Die einzigen zwei Entschuldigungen:
Natürlich funktioniert ein Stringvergleich auch - sogar bei "Chanel no 5", bei dem meine Methode nicht erkennen würde, dass es auf "5" endet.
Grüße
Biber
Zitat von @rubberman:
Hallo Biber,
Ein einfaches Modulo 10 wäre es gewesen, anschließend auf Ergebnis 5 prüfen.
Ja, das fiel mir gestern abend auch noch ein - aber da wollte ich keinen Rechner mehr anschalten.Hallo Biber,
Ein einfaches Modulo 10 wäre es gewesen, anschließend auf Ergebnis 5 prüfen.
Die einzigen zwei Entschuldigungen:
- Mathe war keines meiner Leistungsfächer
- es war ein sehr warmer Montach gestern
set /a rest=zahl % 10
reicht völlig, und dann gucken, ob 5 übrig bleibt.Natürlich funktioniert ein Stringvergleich auch - sogar bei "Chanel no 5", bei dem meine Methode nicht erkennen würde, dass es auf "5" endet.
Grüße
Biber