PDA

Visualizza versione completa : [WIN] Batch che esegua azione se dato file non ha data odierna


gutguy
03-09-2009, 10.17.16
Salve,
Come da oggetto.
In internet ho trovato diversi bat ma nessuno mi funziona, vorrei creare un bat che controlli se tre file (devo poterli indicare con percorso completo nel bat stesso) hanno la data odierna, se è così il bat deve terminare se invece anche solo uno non ha la data odierna il bat deve creare un file txt col nome del file che non ha data odierna.
Qualcuno ha idea di come posso fare questo?
Grazie a chiunque mi risponderà.

gutguy
03-09-2009, 10.30.38
Ho trovato ad esempio questo:

http://www.robvanderwoude.com/datetimeprefix.php

Ma a me non funziona.
Mi restituisce:

"Immettere" non è riconosciuto come comando interno o esterno,
un programma eseguibile o un file batch.

C:\file.txt was created or modified today ()


Il file "file.txt" però non aveva data odierna bensì quella di ieri quindi oltre a dare ilk problema sopra (il fatto che appare "immettere") non funziona perché dice che quel file ha data odierna quondo in realtà non è così.

Andre@
14-09-2009, 16.50.48
Quello che riesco a fare io è questo:

@echo off
dir NOMEFILE1 > fil1
dir NOMEFILE2 > fil2
dir NOMEFILE3 > fil3
for /f "tokens=1,2,3 delims=/ " %%a in ('date /t') do set oggi=%%a/%%b/%%c
find /n "%oggi%" fil1
if errorlevel=1 dir /B NOMEFILE1 >file1
find /n "%oggi%" fil2
if errorlevel=1 dir /B NOMEFILE2 >file2
find /n "%oggi%" fil3
if errorlevel=1 dir /B NOMEFILE3 >file3
copy file? esito.txt
del fil1
del fil2
del fil3
del file1
del file2
del file3




Devi sostituire NOMEFILE1 NOMEFILE2 NOMEFILE3 con i 3 file da verificare.
Il batch crea dei file temporanei che verifica e poi cancella restituendo un file chiamato esito.txt contenente il nome del file che non ha data odierna.
Ciao

Andre@
15-09-2009, 19.03.03
Piccola modifica.
All'inizio dove c'è set nomfil1/2/3= devi mettere il percorso e il nome dei file da controllare.


-----------------
@echo off
set nomfil1=c:\prova1.doc
set nomfil2=c:\cartella\prova2.bat
set nomfil3=c:\cartella\pippo\pluto.txt

dir %nomfil1% > filtmp1
dir %nomfil2% > filtmp2
dir %nomfil3% > filtmp3

for /f "tokens=1,2,3 delims=/ " %%a in ('date /t') do set oggi=%%a/%%b/%%c

find /n "%oggi%" filtmp1
if errorlevel=1 dir /B %nomfil1% >filetmp1
find /n "%oggi%" filtmp2
if errorlevel=1 dir /B %nomfil2% >filetmp2
find /n "%oggi%" filtmp3
if errorlevel=1 dir /B %nomfil3% >filetmp3

copy filetmp? esito.txt

del filtmp?
del filetmp?

-----------------

gutguy
18-09-2009, 17.27.57
Grazie mille, non so davvero come ringraziarti!
Se passi dalle parti di Bologna ti offro una (B)

:)