batch: if-Anweisung mit string-Vergleich immer true zurück
if "x%1" == "x" (
goto :l2
)
:l2
echo doskey %1>>startup.cmd
Versucht, mit und ohne Klammern auf beiden den Zustand und die springen auch versucht, ohne Anführungszeichen und natürlich springen auf der gleichen Linie - es gibt immer true zurück.
- Sind Sie übergeben ein argument, um Ihre batch-Skript?
%1
ist der Wert für das erste argument an das Skript übergeben; wenn Sie nicht durch ein argument, die if-Anweisung wird immer wahr sein. Was versuchen Sie zu erreichen mit Ihrenif
Aussage? - Ja, ich bin mir übergeben von Argumenten.
- Nein das tut es nicht - aber genau derselbe code ausgeführt wird, gleichgültig, was es ergibt.
- Kümmern Sie sich um das etwas erläutern?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie einen sehr dummen Fehler 🙂
Wenn die Bedingung wahr ist Sie GOTO label ein.
Wenn die Bedingung false ist Sie nicht SPRINGEN, aber Sie fallen in der nächsten Zeile, die passiert werden Ihre label.
Gleiche Ergebnis, so oder so!
Anderen Fragen -
1) ich denke, Ihre Logik wird Umgekehrt. Ich glaube, Sie wollen nur SPRINGEN :l2 if %1 definiert ist, müssen Sie die Rückseite.
2) A %1 Wert
"A&B"
(einschließlich der Anführungszeichen) scheitern würde. Besser"%~1"
statt"%1"
3) Es besteht keine Notwendigkeit für die x in Ihrem Vergleich.
Leicht behoben:
Muss man wirklich nicht goto: