Ich bekomme jedoch den Fehler 1 was not expected at this time
. Wenn Echo eingeschaltet ist, wird if equ 1 (
ausgegeben, in dem der Fehler aufgetreten ist. Bitte beraten Sie, wie Sie das lösen können.Batch-Datei überprüfen, ob eine Variable definiert ist und ihren Wert
Antwort
habe ich /*some condition*/
mit 1==1
ersetzt:
@echo off
if 1==1 set myvar=1
if defined myvar (
if %myvar% equ 1 (
echo Hurray
)
)
Das funktioniert perfekt. Der Fehler muss also irgendwo in deinem Zustand liegen. Ich denke, Aschipfl hat recht über die fehlende delayed expansion
. Versuchen Sie folgendes:
@echo off
setlocal enabledelayedexpansion
if /*some condition*/ set myvar=1
if defined myvar (
if !myvar! equ 1 (
echo Hurray
)
)
Add enabledelayedexpansion und Surround Ihre Variablen mit !...!
statt %...%
.
Was macht! var! do? –
Variablen werden erweitert Zur Interpretation: Dies bedeutet, dass Ihr Skript verarbeitet wird und alle Werte auf die Variablen gesetzt sind. Wenn die Variable ihren Wert ändert und der neue Wert nicht am Anfang des Skripts berechnet werden kann (z. B. wenn es von der Eingabe des Benutzers abhängt), Wenn es in einem If- oder einem For-Konstrukt ist, ändert der Wert seinen Wert nicht.Um den Wert "neu berechnen" zu lassen, müssen Sie ihn mit! ... umgeben! Dies wird als verzögerte Expansion bezeichnet. – MichaelS
Aber in diesem Falls die Variable bereits vor dem Beginn des Codeblocks gesetzt wurde, ist eine verzögerte Erweiterung nicht erforderlich, da Aschipfl die wahre Ursache des Problems in seinen Fragekommentaren (oder anderen Token-Trennzeichen) innerhalb des Werts identifiziert hat, die auftauchen der IF - Parser, leicht zu lösen durch dding zitiert um beide Seiten des Vergleichs. Die Verwendung der verzögerten Expansion vermeidet auch das Problem, aber aus einem völlig anderen Grund als das, was Sie erklärt haben. – dbenham
- 1. Prüfen, ob eine Variable definiert ist?
- 2. Python: überprüfen, ob Variable definiert ist und seinen Wert zurückgeben oder einen anderen Wert zurückgeben
- 3. PHP - überprüfen, ob die Variable nicht definiert ist
- 4. Überprüfen, ob ein doppelter Wert eine ganze Zahl ist - Swift
- 5. Ist es besser, eine Variable zu überprüfen, bevor Sie ihren Wert in C++ setzen?
- 6. Überprüfen, ob die Variable den Wert '' hat
- 7. Testen, ob eine GDB-Convenience-Variable definiert ist
- 8. Eine BLE-Peripherie-Eigenschaft lesen und ihren Wert überprüfen?
- 9. Überprüfen Sie, ob die Variable falsch und nicht wahr oder nicht definiert ist
- 10. statische Variable verliert ihren Wert
- 11. Python: Verwandle einen String in eine Variable und ihren Wert
- 12. Überprüfen, ob eine Variable eine Ganzzahl in Javascript ist
- 13. Bash-Shell-Skript - Überprüfen Sie, ob eine Flagge und greifen ihren Wert
- 14. Überprüfen, ob der Wert isset und null ist
- 15. Überprüfen Sie, ob eine Variable in Django Templating Sprache definiert ist
- 16. Wie überprüfen Sie, ob eine Variable in einem Modul in Julia definiert ist?
- 17. Überprüfen Sie, ob Array-Wert isset und ist null
- 18. Überprüfen Sie, ob eine Variable ein Datum mit Zweig ist
- 19. Überprüfen Sie, ob es sicher ist, über eine JavaScript-Variable
- 20. Überprüfen, ob Variable gesetzt ist, nicht null und nicht leer
- 21. Wie kann ich überprüfen, ob eine Variable eine andere Variable in einer Windows-Batch-Datei enthält?
- 22. Überprüfen Sie, ob eine Variable ein Array ist
- 23. AS3: Überprüfen, ob eine Variable vom Typ des Objekts ist
- 24. überprüfen, ob eine Variable vom Typ mysqli object ist?
- 25. Javascript überprüfen, ob eine Variable das Fenster ist
- 26. Überprüfen Sie, ob die Variable eine Zahl ist
- 27. Zurückgeben, wenn eine Variable nicht definiert ist
- 28. Ionischer Alarm - Überprüfen, ob das Ergebnis nicht definiert ist
- 29. Überprüfen, ob Wert select2 null ist
- 30. Überprüfen, ob der Combobox-Wert leer ist
'wenn"% myvar% "equ" 1 "' funktionieren sollte; Wenn '% myvar%' ein Leerzeichen oder ein anderes Token-Trennzeichen '' '' '' '' 'enthält oder wenn es andere Sonderzeichen wie'^'' & '' <' '> '' '' enthält, erhalten Sie ein Fehler ohne "" "; Wenn es '' 'enthält, können Sie einen Fehler nur vermeiden, wenn Sie [verzögerte Erweiterung] (http://ss64.com/nt/delayedexpansion.html) verwenden ... – aschipfl