gr4v3l
Goto Top

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 Hilfeface-smile
PS: Bin neu hier...

Content-ID: 212031

Url: https://administrator.de/contentid/212031

Ausgedruckt am: 26.11.2024 um 08:11 Uhr

rubberman
rubberman 21.07.2013 aktualisiert um 02:23:01 Uhr
Goto Top
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.
if %zahl:~-1%==5 goto 5
Das letzte Zeichen in der Variablen wird mit 5 verglichen.

Grüße
rubberman
gr4v3l
gr4v3l 22.07.2013 um 22:20:32 Uhr
Goto Top
Danke,werds mal ausprobieren face-smile
Das mit String muss ich mir mal genauer anschauen, wie gesagt bin eher neuface-smile
lg gr4v3l
Biber
Biber 22.07.2013 aktualisiert um 23:44:39 Uhr
Goto Top
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:

> 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
Endoro
Endoro 22.07.2013 um 23:57:06 Uhr
Goto Top
Nicht zu vergessen die oberedle Regex Lösung face-smile
echo %zahl%|findstr /e "5" >nul && echo fünf am Ende || echo keine fünf am ende  
lg
rubberman
rubberman 22.07.2013, aktualisiert am 23.07.2013 um 00:47:28 Uhr
Goto Top
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 face-wink).

Grüße
rubberman
Biber
Biber 23.07.2013 aktualisiert um 09:42:47 Uhr
Goto Top
Moin rubberman,

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.
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. face-wink

Grüße
Biber