adinin
Goto Top

Meine Batch datei

Brauche Tipps

Ich habe eine sehr einfache frage da ich erst neulich mich mit Batch datein beschäftige weis ich noch nicht so viel über sieface-smile
Ich möchte fragen was man noch an diesem Beispiel verbessern oder verändern kann.

@echo offcolor 71title adininecho * *echo * *echo * *echo *echo * *echo * *echo * *echo Hallo bitte "r" drücken und dann enterset /p ordner=Option:if %ordner%==ja goto ordner:ordnermkdir ordner1mkdir ordner2mkdir ordner3mkdir ordner4mkdir ordner5echo Um die ordner wieder zu loeschen ja enfuegenecho um die ordner zu behalten nein einfuegenset /p ordner=Option:if %ordner%==ja goto lordnerif %ordner%==nein goto lexit:lordnerrmdir ordner1rmdir ordner2rmdir ordner3rmdir ordner4rmdir ordner5:lexitexitpause

Content-Key: 115546

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

Ausgedruckt am: 28.03.2024 um 09:03 Uhr

Mitglied: Biber
Biber 07.05.2009 um 19:48:53 Uhr
Goto Top
Moin adinin,

zwei Grundregeln gelten bei Batch genauso wie bei "richtigen" Programmiersprachen:

  • die Programmumgebung wird genauso verlassen wie vorgefunden. Weder Umgebungsvariablen noch Pfade noch aktuelle Laufwerke noch Farbeinstellungen sind nach Beendigung (oder Absturz) des Programms verändert
  • die Programm-Logik muss stimmen.

Zum ersten Punkt: siehe "SetLocal /?" "PushDir/PopDir/?" , "Color /?" am CMD-Prompt

Zum zweiten Punkt:
a) Diese "Prüfung"
....
....
if %ordner%==ja goto ordner
:ordner
...

...führt dazu, dass der Anwender/die Anwenderin auch "Banane" oder "Dieter Bohlen is' doof" eingeben kann.
Am Programmablauf ändert sich nix.

~~~~

b) diese Reihenfolge
...
...
exit
pause

... führt zu einer "pause" wie im richtigen Leben.
Sehr, sehr selten.

Grüße
Biber
Mitglied: 77559
77559 07.05.2009 um 20:19:27 Uhr
Goto Top
Ergänzend zu dem bereits von Biber Gesagten,

Bei If Abfragen ist die Groß-/Kleinschreibung nicht egal, es sei denn du nimmst If /i

Wenn du den Inhalt einer Variable abfragst, die ja auch leer sein kann, solltest du auf beiden Seiten etwas dazufügen was die Prüfung auf Gleichheit nicht beeinflusst aber einen Syntaxfehler vermeidet wenn die Variable eben leer ist.

If /i "%ordner%"=="ja"

zum Speibiel face-wink

Ansonsten ist Vieles bei der Gestaltung/Formatierung eines Batches eine Gewohnheits-/Geschmakcsfrage.

Als Redundanzfanatiker würde ich eher schreiben :
Set OrdnerListe=ordner1 ordner2 ordner3 ordner4 ordner5
For %%A in (%OrdnerListe%) Do MD %%A
:: und 
For %%A in (%OrdnerListe%) Do RD /Q /S %%A  >NUL

Gruß
LotPings
Mitglied: hajowe
hajowe 08.05.2009 um 08:42:27 Uhr
Goto Top
Zitat von @77559:


Als Redundanzfanatiker würde ich eher schreiben :


Du sagst es ja schon selbst.
Aber ich denke er beginnt zu laufen,.
Ist wie bei Kleinkindern erst krabbeln --> laufen --> rennen.

Du solltest ihn mit den höheren gleich zu Beginn überfordern.
Mitglied: Biber
Biber 08.05.2009 um 09:53:21 Uhr
Goto Top
Zitat von @hajowe:

Du solltest ihn mit den höheren gleich zu Beginn überfordern.

Öhmm ja. Klingt logisch. face-wink

Grüße
Biber
Mitglied: adinin
adinin 08.05.2009 um 15:51:27 Uhr
Goto Top
danke für eure hilf werde versuchen einige sachen besser zu machen.
Wie kann ich machen das man nur ja eingeben kann und sonst geht einfah nix also man kann dann nicht mehr "Dieter Bohlen is' doof" (da muss ich Biber zu stimmenface-smile ) eingeben und es geht dann weiter. Wie soll ich das anstellen?
Mitglied: 77559
77559 08.05.2009 um 16:18:32 Uhr
Goto Top
Die Eingabe kannst du nicht so ohne weiteres verhindern, du kannst aber bei nicht vorgegebenen Eingaben einfach erneut fragen.

:loop
echo Hallo bitte "r" drücken und dann enter   
set /p ordner=Option [r/ja] :
If defined ordner for %%A in (r ja) do If /I "%ordner%"=="%%A" goto :Antw_%%A  
goto :loop
:AntW_r
:: was auch immer
goto :eof
:AntW_ja
::

Gruß
LotPings

PS: laufen können oder nicht, dies ist meines Erachtens eine der effizienstesten Gültigkeitsabfragen.
Fehler mit 3* %%% korrigiert.