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

Printed on: April 19, 2024 at 20:04 o'clock

Member: Biber
Biber May 07, 2009 at 17:48:53 (UTC)
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 May 07, 2009 at 18:19:27 (UTC)
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
Member: hajowe
hajowe May 08, 2009 at 06:42:27 (UTC)
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.
Member: Biber
Biber May 08, 2009 at 07:53:21 (UTC)
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
Member: adinin
adinin May 08, 2009 at 13:51:27 (UTC)
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 May 08, 2009 at 14:18:32 (UTC)
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.