WinFuture-Forum.de: Batch-Programmierung ;) - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Batch-Programmierung ;) was ist falsch?


#1 Mitglied ist offline   abcd123456789 

  • Gruppe: Mitglieder
  • Beiträge: 4
  • Beigetreten: 01. April 13
  • Reputation: 0

geschrieben 01. April 2013 - 17:37

hey,
ich hab vor kurzem mal mit der batch programmierung angefangen...
jetzt hab ich ein bisschen rumprobiert und bin am verzweifeln ;(
wenn ich das passwort eingegeben habe wird das script einfach geschlossen und nichts passiert...
was ist falsch?



@echo off

:start

set /p eingabe="Bitte geben sie das Passwort ein:"

if %eingabe%[NOT]==1234 goto nein
if %einagbe%==1234 goto ja


:nein
echo falsches Passwort
goto start
pause>nul

:ja
start "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" facebook.com

Dieser Beitrag wurde von abcd123456789 bearbeitet: 01. April 2013 - 17:38

0

Anzeige



#2 _d4rkn3ss4ev3r_

  • Gruppe: Gäste

geschrieben 01. April 2013 - 17:50

Willkommen im Forum!

set /p eingabe="Bitte geben sie das Passwort ein:" -> funktioniert, aber die "" können weg. Und hinter dem ein: würd ich ein Leerzeichen einfügen.

So:
if not "%eingabe%"=="1234" goto :nein
if "%eingabe%"=="1234" goto :ja

Einfacher würde ich den gesamten Code so machen:

@echo off
:start
set /p eingabe=Bitte geben sie das Passwort ein:
if "%eingabe%"=="1234" start "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" facebook.com&exit
echo falsches Passwort
pause>nul
goto :start

Erklärungen: Die Anführungsstriche bei der if Abfrage deshalb weil es ohne manchmal Probleme geben kann. Meist bei Leerzeichen.
Das if not kannst du dir sparen, da alles andere als "korrekt" ja falsch ist.
Bei goto verwendet man immer ein Doppelpunkt vor der Sprungmarke.
Das pause muss vor dem goto kommen, da er ja sonst das pause ignoriert, da er schon bei :start wieder ist.
Das &exit hinter dem aufrufen von Facebook sorgt dafür dass das Script danach beendet wird.

PS: Passwörter stehen in einer Batch immer im Klartext

Dieser Beitrag wurde von d4rkn3ss4ev3r bearbeitet: 01. April 2013 - 17:51

0

#3 Mitglied ist offline   abcd123456789 

  • Gruppe: Mitglieder
  • Beiträge: 4
  • Beigetreten: 01. April 13
  • Reputation: 0

geschrieben 02. April 2013 - 11:11

Ok dankeschön :)
bin grade dabei ein gespräch zu schreiben :D
klappt allerdings noch nich soo ganz xD
wenn ich keine von den möglichkeiten eingeb wirds wieda geschlossn ...


@echo off

title Batchy

echo.
echo Hi, wie heisst du?
set /p x=

:HS
echo Oh, coler Name. Ich heisse Batchy ;) Wie geht es dir?
set /p x=
if "%x%"=="gut" goto A1
if "%x%"=="schlecht" goto A2
if "%x%"=="geht so" goto A3
if "%x%"=="gut, dir?"goto A1
if "%x%"=="schlecht, dir?" goto A2
if "%x%"[NOT]"=="gut"goto A4
if "%x%"[NOT]=="schlecht" goto A4
if "%x%"[NOT]=="geht so" goto A4
if "%x%"[NOT]=="gut, dir?"goto A4
if "%x%"[NOT]=="schlecht, dir?" goto A4

:A1
echo.
echo Cool, mir auch ;)
echo.
pause>nul
goto q2

:A2
echo.
echo "Das ist aber schade;( . Mir geht es gut ;)"
echo.
pause>nul
goto q2


:A3
echo.
echo Ok ;) Mir gehts gut :D
echo.
pause>nul
goto q2

:A4
echo.
echo Gib bitte gut oder schlecht ein !
echo.
pause>nul
goto HS

Dieser Beitrag wurde von abcd123456789 bearbeitet: 02. April 2013 - 11:15

0

#4 _d4rkn3ss4ev3r_

  • Gruppe: Gäste

geschrieben 02. April 2013 - 16:43

Du hast Fehler in der if Abfrage und in dem goto drin.
Oben hab ich geschrieben wie es richtig heißt.
0

#5 Mitglied ist offline   RalphS 

  • Gruppe: VIP Mitglieder
  • Beiträge: 8.902
  • Beigetreten: 20. Juli 07
  • Reputation: 1.126
  • Geschlecht:Männlich
  • Wohnort:Zuhause
  • Interessen:Ja

geschrieben 02. April 2013 - 21:29

@TO: Lies Dich mal noch ein wenig tiefer in die Syntax ein. :)

-- Das "[NOT]" in Deinen IF-Befehlen tut NICHT, was Du willst:
01 + echo Oh, coler Name. Ich heisse Batchy ;) Wie geht es dir?
01 >>> Oh, coler Name. Ich heisse Batchy ;) Wie geht es dir?
02 + set /p x=
02 <<< okay
03 + if "%x%"=="gut" goto A1
03 ### if "okay"=="gut"
04 + if "%x%"=="schlecht" goto A2
04 ### if "okay"=="schlecht"
05 + if "%x%"=="geht so" goto A3
05 ### if "okay"=="geht so"
06 + if "%x%"=="gut, dir?"goto A1
06 ### if "okay"=="gut, dir?"
07 + if "%x%"=="schlecht, dir?" goto A2
07 ### if "okay"=="schlecht, dir?"
08 + if "%x%"[NOT]"=="gut"goto A4
08 ### if "okay"[NOT]"=="gut"
09 + if "%x%"[NOT]=="schlecht" goto A4
09 ### if "okay"[NOT]=="schlecht"

(...)


+ ..... Aktuelle Zeile
>>> ... Ausgabe
<<< ... Eingabe
### ... Tatsächlich ausgeführter Befehl (wenn vom Code abweichend)

(In den Zeilen 6 und 8 fehlt darüber hinaus ein Leerzeichen = Syntaxfehler.)


-- Es gibt keine Sprungmarke namens q2.

-- Leerzeichen und Anführungszeichen sind nur in seltensten Fällen optional.

Kleine Empfehlung:
- Starte die Batchdatei von der Kommandozeile aus (Dateinamen eingeben + Enter)
- Überleg Dir, wie der Programmfluß aussehen soll (lies: was das Programm unter welchen Umständen tun soll.
- IF kennt auch einen ELSE-Teil. Da ist die Dokumentation zugegeben etwas mau:

IF <Bedingung> ( Befehle ) ELSE ( Befehle )


Bedingung sollte klar sein, Befehle können durchaus mehrere sein und nicht nur einer:

IF "%draußen%"=="Regen" (
nimm jacke
hol schirm
zieh gummistiefel an
) ELSE (
spar dir den aufwand
zieh normale schuhe an
)


Anführungszeichen und Klammern nicht vergessen!
"If you give a man a fish he is hungry again in an hour. If you teach him to catch a fish you do him a good turn."-- Anne Isabella Thackeray Ritchie

Eingefügtes Bild
Eingefügtes Bild
0

#6 Mitglied ist offline   abcd123456789 

  • Gruppe: Mitglieder
  • Beiträge: 4
  • Beigetreten: 01. April 13
  • Reputation: 0

geschrieben 03. April 2013 - 14:16

erstma danke für die antworten @ralph du hastn anderen editor ich blick bei dir ned durch ... XD
@d4rkn3ss43ver oder wie auch immer...:D isses so richtig?

if not "%x%"=="gut"goto :A4
0

#7 _d4rkn3ss4ev3r_

  • Gruppe: Gäste

geschrieben 03. April 2013 - 14:25

Bis das du ein Leerzeichen vergessen hast, ist es richtig ja.

if not "%x%"=="gut" goto :A4

Ich hab mal das unterstrichen, wo dazwischen das Leerzeichen muss.

Dieser Beitrag wurde von d4rkn3ss4ev3r bearbeitet: 03. April 2013 - 14:26

0

#8 Mitglied ist offline   abcd123456789 

  • Gruppe: Mitglieder
  • Beiträge: 4
  • Beigetreten: 01. April 13
  • Reputation: 0

geschrieben 03. April 2013 - 18:21

ahh ok danke ;)
mann! xD man kann ja echt überall fehler machen :)
0

#9 _d4rkn3ss4ev3r_

  • Gruppe: Gäste

geschrieben 03. April 2013 - 18:33

Du kannst dir auch mal mein Script anschauen
Recht gut geeignet zum lernen: Hell's Toolbox
0

#10 Mitglied ist offline   Madnex 

  • Gruppe: aktive Mitglieder
  • Beiträge: 51
  • Beigetreten: 09. Juni 13
  • Reputation: 25
  • Geschlecht:Männlich

geschrieben 08. Juli 2013 - 16:17

Beitrag anzeigenZitat (d4rkn3ss4ev3r: 01. April 2013 - 17:50)

Bei goto verwendet man immer ein Doppelpunkt vor der Sprungmarke.

Hallo,

ist das eine Angewohnheit von dir oder steht das irgendwo festgeschrieben? Der GOTO-Befehl benötigt den Doppelpunkt eigentlich nicht zwingend. Das habe ich so auch sonst noch nirgendwo gesehen.
0

#11 Mitglied ist offline   sкavєи 

  • Gruppe: aktive Mitglieder
  • Beiträge: 6.759
  • Beigetreten: 20. Juli 04
  • Reputation: 62
  • Geschlecht:Männlich
  • Wohnort:Stralsund

geschrieben 08. Juli 2013 - 17:41

Zitat

The label within the batch program must begin with a colon (:). Windows XP recognizes a batch program line beginning with a colon (:) as a label and does not process it as a command.


http://www.microsoft...o.mspx?mfr=true

Dieser Beitrag wurde von sкavєи bearbeitet: 08. Juli 2013 - 17:41

Eingefügtes Bild
Eingefügtes Bild
0

#12 Mitglied ist offline   Madnex 

  • Gruppe: aktive Mitglieder
  • Beiträge: 51
  • Beigetreten: 09. Juni 13
  • Reputation: 25
  • Geschlecht:Männlich

geschrieben 08. Juli 2013 - 17:51

@sкavєи
Richtig. Das Sprungziel muss mit einem Doppelpunkt beginnen. Aber nicht der Verweis auf dieses Ziel nach dem GOTO-Befehl.
0

#13 Mitglied ist offline   RalphS 

  • Gruppe: VIP Mitglieder
  • Beiträge: 8.902
  • Beigetreten: 20. Juli 07
  • Reputation: 1.126
  • Geschlecht:Männlich
  • Wohnort:Zuhause
  • Interessen:Ja

geschrieben 08. Juli 2013 - 23:19

Directs cmd.exe to a labeled line in a batch program.

GOTO label

  label   Specifies a text string used in the batch program as a label.

You type a label on a line by itself, beginning with a colon.

If Command Extensions are enabled GOTO changes as follows:

GOTO command now accepts a target label of :EOF which transfers control
to the end of the current batch script file.  This is an easy way to
exit a batch script file without defining a label.  Type CALL /?  for a
description of extensions to the CALL command that make this feature
useful.



Denke mal, das ist klar und eindeutig. Label ist Label; Sprungmarke ist Doppelpunkt plus Label.
"If you give a man a fish he is hungry again in an hour. If you teach him to catch a fish you do him a good turn."-- Anne Isabella Thackeray Ritchie

Eingefügtes Bild
Eingefügtes Bild
0

#14 Mitglied ist offline   sкavєи 

  • Gruppe: aktive Mitglieder
  • Beiträge: 6.759
  • Beigetreten: 20. Juli 04
  • Reputation: 62
  • Geschlecht:Männlich
  • Wohnort:Stralsund

geschrieben 08. Juli 2013 - 23:49

Es funktioniert zwar vielleicht, ist aber nicht so gedacht. Das Label soll mit einem ":" beginnen. Nicht dem Label soll ein ":" vorangestellt werden. Das Problem ist dann nämlich, dass es Sonderfälle gibt, z.B.:
goto EOF
funktioniert nicht
goto :EOF
funktioniert.

Daher ist es sinnvoll das Label (also ":label") immer komplett auszuschreiben.
Eingefügtes Bild
Eingefügtes Bild
0

#15 Mitglied ist offline   RalphS 

  • Gruppe: VIP Mitglieder
  • Beiträge: 8.902
  • Beigetreten: 20. Juli 07
  • Reputation: 1.126
  • Geschlecht:Männlich
  • Wohnort:Zuhause
  • Interessen:Ja

geschrieben 09. Juli 2013 - 00:26

Ja, weil :EOF ein spezielles Label ist, was implizit aufs Dateiende paßt.


- Ist aber auch relativ egal. Der Doppelpunkt für GOTO (Label) ist optional außer für :EOF... das heißt ja auch nur, daß man den da durchaus hinschreiben kann.

Nur halt nicht unbedingt muß, außer in diesem einen Fall. :)

NB. Ich schreib den Doppelpunkt in der GOTO auch meistens mit (allerdings verwende ich GOTO nur, wenn faul bin. Finde Sprungmarken im Code furchtbar) damit ich gleich sehe, was was ist. :)

Dieser Beitrag wurde von RalphS bearbeitet: 09. Juli 2013 - 00:32

"If you give a man a fish he is hungry again in an hour. If you teach him to catch a fish you do him a good turn."-- Anne Isabella Thackeray Ritchie

Eingefügtes Bild
Eingefügtes Bild
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0