Comandi dos e date...

lunedì 27 luglio 2015 - 16.21

nicolas74 Profilo | Newbie

Ciao a tutti,
avrei questa necessità:
fare in modo che un file batch esegua un eseguibile, solamente se la data odierna è inferiore a quella impostata in un file txt.
sono riuscito a fare in modo che l'eseguibile parta solo se la data è differente con un semplice if), ma in questo modo se la data odierna è successiva a quella impostata nel file di testo, l'eseguibile viene fatto partire ugualmente, mentre io vorrei che la data che scrivo nel file di testo sia la data ultima, oltre la quale l'eseguibile non viene eseguito.
grazie a tutti coloro che vorranno aiutarmi.

angelotv Profilo | Guru

Se dal Prompt dei Comandi scrivi if /? ti esce la seguente pappardella...

Esegue un'elaborazione condizionale in programmi batch.

IF [NOT] ERRORLEVEL numero comando
IF [NOT] stringa1==stringa2 comando
IF [NOT] EXIST nomefile comando

NOT Specifica che Windows XP dovrebbe eseguire
il comando solo se la condizione Š falsa.

ERRORLEVEL numero Specifica una condizione vera se l'ultimo programma
eseguito ha restituito un codice di uscita uguale o
maggiore del numero specificato.

stringa1==stringa2 Specifica una condizione vera se le stringhe di testo
specificate corrispondono.

EXIST nomefile Specifica una condizione vera se il nomefile specificato
esiste.

comando Specifica il comando da eseguire se la condizione Š
soddisfatta. Il comando pu• essere seguito dal comando
ELSE che eseguir… il comando dopo la parola chiave ELSE
se la condizione specificata Š FALSE

La clausola ELSE deve essere indicata nella stessa riga del comando dopo IF. Per esempio:

IF EXIST nomefile. (
del nomefile.
) ELSE (
echo nomefile. mancante.
)

La situazione seguente NON funziona perch‚ il comando del deve essere terminato
con una nuova riga:

IF EXIST nomefile. del nomefile. ELSE echo nomefile. mancante

Neanche in questo caso funziona. Il comando ELSE deve essere sulla stessa riga
della fine del comando IF:

IF EXIST nomefile. del nomefile.
ELSE echo nomefile. mancante

Questa situazione funziona se si desidera tutto su una riga:

IF EXIST nomefile. (del nomefile.) ELSE echo nomefile. mancante

Se le estensioni ai comandi sono abilitate IF cambia come segue:

IF [/I] stringa1 operat. compar. stringa2 comando
IF CMDEXTVERSION numero comando
IF DEFINED variabile comando

dove operat. compar. pu• essere uno di:

EQU - uguale
NEQ - non uguale
LSS - meno di
LEQ - meno di o uguale
GTR - maggiore di
GEQ - maggiore di o uguale

e l'opzione /I, se specificata, indica di non distinguere tra maiuscole e
minuscole. L'opzione /I pu• essere usata anche nella forma stringa1==stringa2
di IF. Questi confronti sono generici, in quanto sia stringa1 sia
stringa2 sono formate da cifre numeriche, poi le stringhe sono
convertite in numeri e viene eseguito un confronto numerico.

CMDEXTVERSION condizionale opera come ERRORLEVEL, tranne che
il confronto avviene rispetto a un numero di versione interna associato alle estensioni
di comando. La prima versione Š 1 e sar… incrementata di uno quando
sono aggiunte migliorie significative alle estansioni ai comandi.
CMDEXTVERSION condizionale non Š mai vera quando le estensioni ai comandi sono
disabilitate.

IDEFINED condizionale funziona come EXISTS se non che prende una
variabile di ambiente e restituisce come vero se la variabile
Š definita.

%ERRORLEVEL% espande in una rappresentazione di stringa del
corrente valore di ERRORLEVEL, p¢sto che non sia gi…
presente una variabile di ambiente con nome ERRORLEVEL, nel cui caso si
ottiene il valore di quest'ultima. Dopo l'esecuzione di un programma, ecco come
viene usato ERRORLEVEL:

goto answer%ERRORLEVEL%
:answer0
echo Program ha restituito codice 0
:answer1
echo Program ha restituito codice 1

Si possono anche utilizzare i confronti numerici precedenti:

IF %ERRORLEVEL% LEQ 1 goto okay

%CMDCMDLINE% espande alla riga di comando di partenza passata a
CMD.EXE prima di elaborare CMD.EXE, a condizione che non sia
gi… presente una variabile con nome CMDCMDLINE, nel qual caso
si ottiene il valore di questa.

%CMDEXTVERSION% espande in una rappresentazione di stringa del
valore corrente di CMDEXTVERSION, p¢sto che non sia gi…
presente una variabile di ambiente con nome CMDEXTVERSION, nel qual caso
si ottiene il valore di questa.

Dalla quale si evince che la parte che ti dovrebbe interessare è questa:

EQU - uguale
NEQ - non uguale
LSS - meno di
LEQ - meno di o uguale
GTR - maggiore di
GEQ - maggiore di o uguale


Buon lavoro...
by Angelo
www.angelopasetto.t

nicolas74 Profilo | Newbie

mmmm
ho provato LSS o LSQ ma con la data non sembra funzionare.....
Altre idee?

ysdemarc Profilo | Expert

Prova a scrivere i comandi per esteso LESS LESSEQUAL ecc...

altrimenti potresti controllare le date nel main del programma e decidere di non proseguire
Vincenzo
Programmatore sbilenco
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5