2017-10-03 1 views
0

Je sais comment vérifier l'heure dans l'invite de commande, mais je veux vérifier s'il est supérieur ou égal à un nombre, j'espère que l'exemple ci-dessous est clair.Comment vérifier les numéros d'une variable avec un si dans CMD (fichier .bat)

@echo off 

for /f "tokens=*" %%a in ('time /t') do (
    set t=%%a 
) 
set "dt=%t%" 

if "%dt%" <= "12:00" ( 
    echo it is morning 
    pause 
) 

if "%dt%" >= "12:00" ( 
    echo It is night 
    pause 
) 
timeout /t 10 /nobreak>nul 

J'ai essayé 1200 et 12:00, est-il possible d'obtenir les 2 premiers caractères pour une variable? Je pense que ce serait le moyen le plus facile.

+0

[L'invite de commande Windows est * NOT * une invite DOS!] (Https://scalibq.wordpress.com/2012/05/23/the-windows-command-prompt-is-not-a-dos- invite /) – aschipfl

+0

@aschipfl Pour être honnête, j'ai juste sauté directement dans ce sac en sachant qu'il utilise MS DOS, c'est à peu près tout ce que je sais ... haha, pourriez-vous expliquer la différence entre ça et dos? recherche dans le futur et pour m'aider à comprendre un peu plus? Merci: 3 –

Répondre

0

pour sélectionner les 2 premiers caractères du dt variable, utilisez

set "selection=%dt:~0,2%" 

Le 0 est la position de départ et la longueur 2.

Voir set /? |more de l'invite de la documentation

MAIS

la commande if a des exigences très spécifiques pour les opérateurs de comparaison - et > et < utilisez pour rediriger les fichiers.

Voir if /? à partir de l'invite pour la documentation.

0

Il y a plusieurs façons de résoudre ce problème. Je pense que c'est la plus simple:

@echo off 

set "t=%time::=%" 
set /A "dt=t" 

if %dt% leq 120000 (
    echo it is morning 
    pause 
) 

if %dt% geq 190000 ( 
    echo It is night 
    pause 
) 

La commande set "t=%time::=%" obtenir la variable dynamique %time%, qui ont un "HH: MM: SS.CC" le format et Assign "HHMMSS.CC" à la variable t. Ensuite, la commande set /A "dt=t" obtient le numéro jusqu'au premier point: "dt = HHMMSS". Après cela, il suffit de comparer une telle valeur sans guillemets.