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-Key: 212031

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

Printed on: April 25, 2024 at 09:04 o'clock

Member: rubberman
rubberman Jul 21, 2013 updated at 00:23:01 (UTC)
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
Member: gr4v3l
gr4v3l Jul 22, 2013 at 20:20:32 (UTC)
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
Member: Biber
Biber Jul 22, 2013 updated at 21:44:39 (UTC)
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
Member: Endoro
Endoro Jul 22, 2013 at 21:57:06 (UTC)
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
Member: rubberman
rubberman Jul 22, 2013 updated at 22:47:28 (UTC)
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
Member: Biber
Biber Jul 23, 2013 updated at 07:42:47 (UTC)
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