PDA

Visualizza versione completa : batch che calcola il giorno della settimana


xmatrix83
02-10-2006, 18.40.37
Scusate ragazzi, cè una variabile utilizzabile da command line per indicare il giorno della settimana?
Se non esiste vi viene in mente un modo per calcolare il giorno della settimana??

UG0_BOSS
02-10-2006, 20.51.41
Non so come fare con una batch ma conosco qualcosina al riguardo scrivendo programmi in C.

Comunque se descrivi l'utilizzo che ne vuoi fare possiamo darti qualche altra "scappatoia" :)

xmatrix83
02-10-2006, 21.36.28
in pratica ho fatto un batch per i backup, spesso mi capita di doverli fare con cronologia, quindi il lunedi li deve mettere nella cartella lunedi, il martedi nella cartella martedi ecc... di solito faccio la schedulazione a mano, volevo farla in modo automatico

LoryOne
03-10-2006, 08.18.10
A questo punto basterebbe creare un programmino che controlla la data ed esce restituendo il valore del giorno identificabile con errorlevel.
Es: Lunedì 1,Martedì 2,Mercoledi 3, ecc

A questo punto basterebbe if errorlevel x goto label ma è un po come creare uno scheduling a mano. Non vedo differenze.

xmatrix83
03-10-2006, 10.22.44
e quale programmino?? con il comando date /t
non funziona, l'errorlevel è semrpe 0

roberto45
03-10-2006, 11.18.55
Devi usare un programma esterno per identificare il giorno della settimana e restituire con l'errorlevel adeguato per gestire il back-up.
Oppure dare il comando "date < alfa.txt > oggi.txt" in cui alfa.txt contirne solo come comando una riga vuota e un a capo, mentre il file oggi.txt ottenuto conterrà la data attuale incluso il giorno della settimana e poi sempre con un programma esterno identificare il giorno della settimana e lanciare il back-up nella cartella desiderata.

xmatrix83
03-10-2006, 11.30.21
si ma non sono riuscito a trovare un programma esterno che faccia al caso mio, ne ho trovati un paio ma non funzionano su xp, mi danno un errore

Xtefano
03-10-2006, 12.41.20
....
Oppure dare il comando "date < alfa.txt > oggi.txt" in cui alfa.txt

In XP o Win2003 ??
DATE /T (che fa con più semplicità quello che suggerisci) in XP e Win2003 _NON_ restituisce il giorno della settimana, mentre Win2000 (prof o server) si.

In Win2000 (server) io uso questo in un bat

for /f "Tokens=1-4 Delims=/ " %%i in ('date /t') do set dt=%%i-%%j-%%k-%%l

allo stesso modo (usando %i, %j, ecc.) potresti estrarre il giorno della settimana.

Per XP invece non funziona, visto che DATE /T non restituisce il giorno della settimana....


Byez

Stefano

UG0_BOSS
03-10-2006, 15.17.12
Questo programmino da me scritto (qundi dal risultato molto incerto) restituisce un intero a seconda del giorno della settimana.

La settimana parte da domenica, perciò

0 = Domenica
1 = Lunedì
2 = Martedì

... e così via.

xmatrix83
03-10-2006, 16.20.13
grazie millee!! è proprio quello che cercavo!!!

peppino60
28-11-2010, 01.12.50
dove posso reperire il programmino

LoryOne
28-11-2010, 10.59.48
Questo dovrebbe funzionare:

@ECHO OFF
::1
@For /F "tokens=1,2,3 delims=. " %%A in ('Date /t') do @(
::2
Set Day=%%A
)
::3
IF %day%==Mon goto :URLSMONDAY
IF %day%==Tue goto :URLSTUESDAY
IF %day%==Wed goto :URLSWEDNESDAY
IF %day%==Thu goto :URLSTHURSDAY
IF %day%==Fri goto :URLSFRIDAY
EXIT
END


:URLSMONDAY
monday.html

EXIT

:URLSTUESDAY
monday.html

EXIT

:URLSWEDNESDAY
monday.html

EXIT

:URLSTHURSDAY
monday.html

EXIT

:URLSFRIDAY
friday.html

EXIT

Basically I used this to call up a list of internet sites I needed to visit on given days - e.g. Monday I need to check my bank balance, Tuesday I need to visit a forum, Wednesday something else, etc., etc. I automate the .BAT file to run at 7am using the Task Scheduler, so by the time I get to work all the pages are waiting for me ...

Cheers guys,

David.



Forse non funziona così come è stato implementato, credo tu debba modificarlo leggermente, ma il concetto è corretto. Ti do due dritte su come è stato concepito:
Punto 1:
In base alla stringa restituita (%%A) dal comando (Date /t) si identificano i vari tokens (1,2,3 in questo caso) delimitati dal delimitatore specificato (.).
Punto 2:
Il primo dei token è assegnato alla variabile Day
Punto 3:
Si verifica il contenuto della variabile Day e si manda in esecuzione cio che è identificata da un' etichetta.
Aggiungo solo una cosa:
Quando la variabile non è più necessaria, si dovrebbe liberare la memoria da essa occupata attraverso assegnazione nulla, cioè Set Day=