2016-05-29 3 views
0
nicht

Im Grunde, was ich versuche, ein Skript zu erstellen, die nur ausgeführt werden, wenn die Zeit ist LEQ 19:00 Uhr (19.00 Uhr), was ich tat, so weit ist:Zeitvergleich in Batch-Datei arbeitet

set myTime=%time% 
set myFlag=false 
if %myTime% LEQ 19:00 set myFlag=true 
if myFlag=true (
*my script* 
) 

Es gibt diese Fehlermeldung zurück: "86 wurde in diesem Moment nicht erwartet" (86 ist die letzte Zahl der Variablen 'MyTime' [14: 36: 11,86]. Es wird einfach nicht funktionieren.

ich habe auch versucht:

set myTime=%time% 
set myFlag=false 
if %myTime% LEQ 19:00:00,00 set myFlag=true 
if myFlag=true (
*my script* 
) 

Beide Wege bekomme ich die sa mir Fehlermeldung zweistellige Nummer nicht erwartet. Irgendwelche Gedanken darüber, wie man das löst? Es ist sogar möglich, einen Zeitvergleich in einer Windows Batch-Datei durchzuführen.

+0

Es gibt keine (native) Art und Weise in Batch-Programmierung in Echtzeitstempel Vergleiche zu tun . Sie können nur Strings und Zahlen vergleichen; etwas wie "19: 00" oder "19: 00: 00,00" wird als String behandelt. Wenn Ihr Zeitformat jedoch zu Werten mit fester Länge führt, können Sie diese wie Zeichenfolgen vergleichen, um das erwartete Ergebnis zu erzielen. Um Probleme mit dem Zeichen ',' zu vermeiden, schließen Sie die Vergleichsausdrücke in Anführungszeichen ein, wie zum Beispiel: 'if"% myTime% "LEQ" 19: 00: 00,00 "' – aschipfl

Antwort

1

Syntax: Escape Characters, Delimiters and Quotes

Trennzeichen

Trennzeichen trennen einen Parameter von der nächsten - sie teilen die Befehlszeile oben in Worte zu fassen.

Parameter werden am häufigsten durch Zwischenräume getrennt sind, aber jede der folgenden gelten auch Begrenzungszeichen:

  • Komma (,)
  • Semikolon (;)
  • gleich (=)
  • Fläche()
  • Tab()

Beachten Sie, dass, obwohl / und - häufig verwendet werden, um die Optionen des Befehls zu trennen, sie nicht in der obigen Liste enthalten sind. Dies liegt daran, Batch Dateiparameter zu CMD.exe übergeben werden, welche Parameter seine eigene akzeptieren können (die aufgerufen werden, mit / und -)

Next-Code-Snippet sollte (set /? und if /? sehen) arbeiten:

set "myTime=%time%" 
set "myFlag=false" 
if "%myTime%" LEQ "19:00:00,00" set "myFlag=true" 
if "%myFlag%"=="true" (
    echo *my script* 
) 

Beachten Sie, dass das obige Code-Snippet länderabhängig ist.Sie können neben locale unabhängige Lösung ähnlich wie this answer to another question versuchen:

SETLOCAL EnableExtensions 
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "myTime=%%a" 
set "myTime=%myTime:~8,6%" 
set "myFlag=false" 
if "%myTime%" LEQ "190000" set "myFlag=true" 
if "%myFlag%"=="true" (
    echo *my script* 
) 

0
Set Ag=WScript.Arguments 

If CDate(Ag(0)) > CDate(Ag(1)) then 
    Wscript.echo "Param 1 greater than Param 2" 
    wscript.quit 0 
else 
    Wscript.echo "Param 1 NOT greater than Param 2" 
    wscript.quit 1 
End If 

im Batch zu verwenden (verwenden Sie einen beliebigen gültigen Zeit/Datum-String)

scriptname.vbs 7pm 8pm 
If errorlevel 0 if not errorlevel 1 echo Param 1 greater than param 2 
If errorlevel 1 if not errorlevel 2 echo Param 2 greater than param 1 

Oder

scriptname.vbs 19:00:00 20:00:00 
If errorlevel 0 if not errorlevel 1 echo Param 1 greater than param 2 
If errorlevel 1 if not errorlevel 2 echo Param 2 greater than param 1 
Verwandte Themen