Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Richtige If not-Überprüfung

Mitglied: kkboy94

kkboy94 (Level 1) - Jetzt verbinden

12.06.2010, aktualisiert 16:02 Uhr, 2904 Aufrufe, 8 Kommentare

Hallo Leute,

ein nächste Problem tut sich mir in meiner Batch-programmierung auf.
Ich poste einfach mal den betreffenden Code-Abschnitt
01.
:restart1 
02.
echo Sie haben eine falsche Auswahl getroffen.  
03.
echo Bitte die Auswahl wiederholen. 
04.
echo. 
05.
:cont 
06.
echo Auf Gro%ss%-/Kleinschreibung achten! 
07.
set /p question1=Sollen der Key und die Profile gesichert werden?(Ja/Nein):   
08.
if %question1%==Ja goto backup  
09.
if %question1%==Nein echo Sie haben %question1% gew%ae%hlt. 
10.
if not %question1%==Ja goto restart1 
11.
if not %question1%==Nein goto restart1 
12.
goto backupelse
Das Problem ist jetzt folgendes. Wenn ich nun "Nein" eingebe (was an sich eigentlich richtig ist), sagt mir die Batch, dass die Auswhal falsch getroffen ist. Ich habe auch schon geprüft ob ich etwas in dem Programmcode an der Rechtschreibung falsch gemacht hab, aber dem war nicht so.

Vielleicht gibt es ja auch noch andere Wege, die Auswahl wiederholen zu lassen, wenn die Eingabe mit keiner der beiden Möglichkeiten übereinstimmt.
Ich hoffe ihr könnt mir helfen.

MfG Karsten
Mitglied: bastla
12.06.2010 um 16:24 Uhr
Hallo kkboy94!

Warum willst Du Deine Benutzer zu einer Eingabe "Nein" zwingen? Zumeist wird es genügen, festzustellen, ob überhaupt etwas eingegeben wurde (um ein irrtümliches Enter abzufangen) und falls ja, ob sich daraus ein "Ja" ableiten lässt - also etwa:
01.
:restart 
02.
set "question1=" 
03.
set /p question1=Sollen der Key und die Profile gesichert werden?(Ja/Nein):  
04.
if not defined question1 goto :restart 
05.
if /i %question1:~,1%==J goto :backup 
06.
echo Na gut, dann nicht ... 
07.
goto :eof 
08.
 
09.
:backup
Grüße
bastla
Bitte warten ..
Mitglied: kkboy94
12.06.2010 um 16:38 Uhr
Danke für die Anregung
Auf die Idee bin ich noch nicht gekommen


01.
if /i %question1:~,1%==J goto :backup 
Was bedeutet das "~,1%"?

Da ist noch etwas was mich verwirrt:
01.
if not defined question1 goto :restart 
Muss das question1 nicht als Variable mit % angegeben werden?
01.
if not defined %question1% goto :restart 
und das "goto :eof" kann ich dann durch meine eigen Sprungmarke ersetzen?


Dank nochmal

MfG Karsten
Bitte warten ..
Mitglied: bastla
12.06.2010 um 17:07 Uhr
Hallo kkboy!
Was bedeutet das "~,1%"?
Entspricht der Vorgangsweise im anderen Thread - außerdem lässt sich das durch ein
echo %question1:~,1%
relativ leicht nachvollziehen ...
Muss das question1 nicht als Variable mit % angegeben werden?
Gegenfrage: Kannst Du Dir einen vernünftigen Grund vorstellen, warum ich die Prozentzeichen dann nicht gesetzt hätte? Abgesehen davon: Was hat Dein diesbezüglicher Test ergeben (Du hast es doch sicher schon versucht)?
und das "goto :eof" kann ich dann durch meine eigen Sprungmarke ersetzen?
Völlig richtig (wenn Du es beibehieltest, würde der Batch beendet).

Grüße
bastla
Bitte warten ..
Mitglied: kkboy94
12.06.2010 um 21:57 Uhr
Funktioniert alles wunderbar. Wenn man dich nicht hätte.....
Vielen Dank bastla

> Muss das question1 nicht als Variable mit % angegeben werden?
Gegenfrage: Kannst Du Dir einen vernünftigen Grund vorstellen, warum ich die Prozentzeichen dann nicht gesetzt hätte?
Abgesehen davon: Was hat Dein diesbezüglicher Test ergeben (Du hast es doch sicher schon versucht)?

Jap ich habs schon versucht, und wenn ich da Prozentzeichen hin gesetzt habe, ging er sofort zur Sprungmarke. Ist das einfach so, oder gibs da eine Begründung für? Aus reinem Interesse frag das jetzt mal.


PS: Ich wollt jetzt nicht unbedingt einen neuen Thread aufmachen, und außerdem gehörts auch ein wenig zum Thema dazu also hier meine nächste Frage:

Ich habe jetzt in meiner Batch zwei solcher Fragen. Nun hätte ich gerne Nach Abfrage dieser Fragen, eine Überprüfung, ob beide Fragen mit Nein beantwortet wurden, Wenn dies der Fall ist, soll halt eine bestimmte Ausgabe angezeigt werden. Soweit mein Versuch
01.
if %question1%==Nein ( 
02.
 if %question2%==Nein ( 
03.
echo Sie haben keine der beiden Aktionen gewaehlt. 
04.
echo Das Programm wird nun geschlossen. 
05.
ping localhost -n 5 >nul 
06.
exit 
07.
08.
09.
echo Beliebige Taste zum Beenden druecken. 
10.
pause >nul 
11.
exit
Bitte warten ..
Mitglied: bastla
13.06.2010 um 00:32 Uhr
Hallo kkboy!
Ist das einfach so, oder gibs da eine Begründung für? Aus reinem Interesse frag das jetzt mal.
Ja - aus der Hilfe zu "if":
Die Bedingung DEFINED arbeitet genau wie EXIST, bezieht sich aber auf
den Namen einer Umgebungsvariablen und ist wahr, wenn die Umgebungs-
variable definiert ist.
Es ist also nicht die Variable (mit Prozentzeichen), sondern der Name der Variablen anzugeben ...
An sich spricht nicht viel gegen Deine beiden "if" (die Klammer nach dem ersten ist allerdings nicht nötig, und das "exit" - wenn es, wie hier, nicht dazu dient, per "/b" einen Errorlevel zurückzuliefern - würde ich durch ein "goto :eof" ersetzen).

Falls ohnehin nur eine der beiden abgefragten Aktionen ausgeführt werden könnte, böte sich auch "goto" an - schematisch etwa so:
01.
set /p question=Aktion1? 
02.
if /i %question:~,1%==J goto :Aktion1 
03.
 
04.
set /p question=Aktion2? 
05.
if /i %question:~,1%==J goto :Aktion2 
06.
 
07.
echo Na dann nicht ... 
08.
pause 
09.
goto :eof 
10.
 
11.
:Aktion1 
12.
echo Aktion1 erledigt. 
13.
pause 
14.
goto :eof 
15.
 
16.
:Aktion2 
17.
echo Aktion2 erledigt. 
18.
pause 
19.
goto :eof
Weitere Alternative: Eine (Schalter-)Variable %Done% vorweg löschen und bei Ausführung einer Aktion mit einem (beliebigen) Wert versehen
set "Done=" 
... 
... 
echo Aktion 1 wird ausgefuehrt 
set "Done=True" 
... 
... 
echo Aktion 2 wird ausgefuehrt 
set "Done=True" 
... 
...
Am Ende kann dann per
if not defined Done echo Keine Aktion gewaehlt 
pause 
goto :eof
kontrolliert werden, ob der Schalter zumindest durch eine Aktion gesetzt wurde.

Grüße
bastla
Bitte warten ..
Mitglied: kkboy94
13.06.2010 um 11:22 Uhr
Hallo bastla,
#Meine Fragen
  • Wie füge ich deine erste Methode richtig in meinen untenstehenden Code ein?
  • Siehe weiter unten

01.
:restart1 
02.
echo Sie haben eine falsche Auswahl getroffen.  
03.
echo Bitte die Auswahl wiederholen. 
04.
echo. 
05.
:cont 
06.
set "question1=" 
07.
set /p question1=Sollen der Key und die Profile gesichert werden?(Ja/Nein):   
08.
if not defined question1 goto restart1  
09.
if /i %question1:~,1%==J goto backup  
10.
goto backupelse 
11.
 
12.
 
13.
:restart2 
14.
echo Sie haben eine falsche Auswahl getroffen.  
15.
echo Bitte die Auswahl wiederholen. 
16.
echo. 
17.
:backupelse 
18.
set "question2=" 
19.
set /p question2=Sollen die Profile wieder hergestellt werden?(Ja/Nein): 
20.
if not defined question2 goto restart2  
21.
if /i %question2:~,1%==J goto copy  
22.
 
23.
:copyelse 
24.
if /i %question1:~1%==J  
25.
 if /i %question2:~1%==J (  
26.
echo Sie haben keine der beiden Aktionen gewaehlt. 
27.
echo Das Programm wird nun geschlossen. 
28.
ping localhost -n 5 >nul 
29.
goto :eof 
30.
31.
echo Beliebige Taste zum Beenden druecken. 
32.
pause >nul 
33.
goto :eof
Soweit mein Code

nun hatte ich in meinem letzten Post meine Möglichkeit angeführt. Diese Möglichkeit habe ich noch etwas ausgefeilt und bin zu folgendem Ergebnis gekommen:
01.
if /i %question1:~1%==J  
02.
 if /i %question2:~1%==J (  
03.
echo Sie haben keine der beiden Aktionen gewaehlt. 
04.
echo Das Programm wird nun geschlossen. 
05.
ping localhost -n 5 >nul 
06.
goto :eof 
07.
08.
echo Beliebige Taste zum Beenden druecken. 
09.
pause >nul 
10.
goto :eof
Wenn ich bei den beiden Überprüfungsfragen jeweils nicht mit JA (oder ja, Ja, jA....) antworte sollte mir das Programm ja dann sagen, dass ich keine Aktion gewählt habe. Es zeigt mir aber für einen kurzen Augenblick nur "Syntaxfehler" und schließt dann sofort.
Ich weiß aber nicht welcher Syntaxfehler gemeint ist, oder wo ich den finde. Kannst du mir da auch noch bei helfen bastla?

Ich wäre dir sehr verbunden



MfG Karsten
Bitte warten ..
Mitglied: bastla
13.06.2010 um 13:40 Uhr
Hallo kkboy94!

Abgesehen davon, dass die Schreibweise für die Überprüfung nur des ersten Zeichens so
if /i %question1:~,1%==J
oder
if /i %question1:~0,1%==J
aussehen müsste, würdest Du auch eine UND-Verknüpfung für ein zweimaliges "J" durchführen, anstatt auf "NICHT UND NICHT" zu prüfen - daher allenfalls:
01.
if /i not %question1:~,1%==J if /i not %question2:~,1%==J ( 
02.
    Keine Aktion gewaehlt. 
03.
)
Da die Eingaben aber eigentlich einem (Mini-)Menü entsprechen, könntest Du ja vielleicht eher so vorgehen:
01.
echo S = Key und die Profile sichern 
02.
echo W = Profile wieder herstellen 
03.
echo. 
04.
:cont 
05.
set "question1=" 
06.
set /p question1=Bitte  S  oder  W  eingeben:  
07.
if not defined question1 goto :cont 
08.
if /i %question1:~,1%==S goto :backup 
09.
if /i %question1:~,1%==W goto :copy 
10.
echo. 
11.
echo Sie haben keine der beiden Aktionen gewaehlt. 
12.
echo Das Programm wird nun geschlossen. 
13.
ping localhost -n 5 >nul 
14.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: kkboy94
13.06.2010 um 14:08 Uhr
So funktionierts prima. Dankeschön für die klasse Hilfe.

Ich glaube ich muss noch ein wenig an der Vereinfachung meiner Programmierung (falls man das so nennen kann) arbeiten. Ich mache ja anscheinend die Sachen komplexer als nötig.

MfG Karsten
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Passwort überprüfung
Frage von Robin99Batch & Shell4 Kommentare

Hallo, ich bin am ende ich weiß nicht was hier falsch ist: Kann mir da jmd. weiterhelfen? Danke :D ...

Microsoft Office
Excel Wenn Überprüfungen
Frage von moritzhdMicrosoft Office

Hallo zusammen, ich habe folgendes Problem. Ich habe eine Liste von Daten, mit ArtikellNr., Lieferstatusen, Liefernummern (und weiteren Informationen, ...

Batch & Shell
Überprüfung in Batch Datei
gelöst Frage von tkacbgindBatch & Shell7 Kommentare

Hallo, ich habe eine ganz einfache Batch Datei sie einfach nur 16 Excell Dateien öffnen soll echo off echo ...

Verschlüsselung & Zertifikate

Überprüfung von eingereichten Zertifikat-Anfragen auf Duplikate

gelöst Frage von Philipp711Verschlüsselung & Zertifikate1 Kommentar

Hallo Leute, hätte mal wieder ein zunächst einmal theoretische Frage. Es geht um Zertifizierungsstellen und deren Vorgehensweise bei neuen ...

Neue Wissensbeiträge
Windows 10
Zero-Day-Lücke in Microsoft Edge
Information von kgborn vor 18 StundenWindows 10

In Microsofts Edge-Browser klafft wohl eine nicht geschlossene (0-Day) Sicherheitslücke im Just In Time Compiler (JIT Compiler) für Javascript. ...

Sicherheit
Microsoft und Skype: Sicherheit
Information von kgborn vor 18 StundenSicherheit

Die Tage gab es ja einige Berichte zur Sicherheit des Skype-Updaters. Der Updater von Skype läuft unter dem Konto ...

Datenschutz

Behörden ignorieren Sicherheitsbedenken gegenüber Windows 10

Information von Penny.Cilin vor 1 TagDatenschutz8 Kommentare

Hallo, passend zum Thema Ablösung LIMUX in München ein Beitrag bei Heise (siehe Link folgend). Behörden ignorieren Sicherheitsbedenken gegenüber ...

Sicherheit
Information Security Hub Munich airport
Information von brammer vor 1 TagSicherheit

Hallo, Neues Center für Cyber Kriminalität am Münchener Flughafen brammer

Heiß diskutierte Inhalte
Exchange Server
Exchange Postfach Einbindung Betriebs-rat -Arzt, Bewerbung .
gelöst Frage von YellowcakeExchange Server23 Kommentare

Hey ich habe da mal eine Denksport Aufgabe bekommen Genutzt wird ein Exchange Server 2010. hier gibt es den ...

Windows Server
Downgrade von Windows Server 2016 auf 2012 - Wie vorgehen?
Frage von EstefaniaWindows Server13 Kommentare

Guten Ich habe eine Frage an Erfahrene unter euch. Durch einen InPlace Upgrade wurde Windows Server 2012 auf die ...

Windows Server
Delgegierte OU via RDP verwalten - Objektverwaltung zuweisen
gelöst Frage von TOAOICEWindows Server12 Kommentare

Hallo, ich habe folgendes Problem. Ich möchte in meiner Domäne (Server2016), einer Gruppe (OUAdmin) Berechtigungen auf die OU Test ...

Datenschutz
Telematikinfrastruktur Erfahrungsaustausch
Frage von MOS6581Datenschutz12 Kommentare

Moin, unter meinen Kunden befinden sich auch einige Ärzte, welche sich künftig mit der Telematikinfrastruktur-Geschichte der Gematik herumärgern dürfen. ...