PDA

View Full Version : Batch dos: elimina file Data-di-ieri-laltro.txt


reggio
03-12-2019, 18:17
Ciao, avrei l'esigenza di eliminare un file di testo che ho rinominato 2 giorni fà con questo sistema:

ren Z:\*00_doc_test*.txt 00_doc_test_backup_%Date:~6,4%-%Date:~3,2%-%Date:~0,2%-su-SERVER-questo-DEVE-esserci.txt

00_doc_test_backup_2019-12-03-su-SERVER-questo-DEVE-esserci.txt

Come faccio oggi a ELIMINARE il txt di 2gg fà (e non quello rinominato ieri)?

Cioè, domani 04/12/2019 io avrò questi 2 file copiati in una cartella backup

00_doc_test_backup_2019-12-02-su-SERVER-questo-DEVE-esserci.txt
00_doc_test_backup_2019-12-03-su-SERVER-questo-DEVE-esserci.txt

e vorrei cancellare

00_doc_test_backup_2019-12-02-su-SERVER-questo-DEVE-esserci.txt

cioè quello con data -2gg

Sapreste dirmi come fare per "calcolare" il nome file con data -2gg da oggi e cancellarlo?

x_Master_x
03-12-2019, 18:43
@ECHO OFF
SetLocal EnableDelayedExpansion

SET N=2

SET i=100
FOR %%a in (31 28 31 30 31 30 31 31 30 31 30 31) do set /A "i+=1" & SET "dpm[!i!]=%%a"
FOR /F "tokens=1-3 delims=/" %%a in ("%DATE%") do (
SET /A "DD=1%%a-N, I=^!(((DD-101)>>31)+1), MM=1%%b-I, J=^!(MM-100), MM+=J*12"
SET /A "YYYY=%%c-J, dpm[102]+=^!(YYYY%%4), DD+=I*dpm[!MM!]"
)
SET "newDate=%DD:~1%/%MM:~1%/%YYYY%

ECHO %newDate%
PAUSE


Ti consiglio Old Files Manager, link in firma, in ogni caso

reggio
03-12-2019, 19:29
@ECHO OFF
SetLocal EnableDelayedExpansion

SET N=2

SET i=100
FOR %%a in (31 28 31 30 31 30 31 31 30 31 30 31) do set /A "i+=1" & SET "dpm[!i!]=%%a"
FOR /F "tokens=1-3 delims=/" %%a in ("%DATE%") do (
SET /A "DD=1%%a-N, I=^!(((DD-101)>>31)+1), MM=1%%b-I, J=^!(MM-100), MM+=J*12"
SET /A "YYYY=%%c-J, dpm[102]+=^!(YYYY%%4), DD+=I*dpm[!MM!]"
)
SET "newDate=%DD:~1%/%MM:~1%/%YYYY%

ECHO %newDate%
PAUSE


Ti consiglio Old Files Manager, link in firma, in ogni caso

Grazie per la rapidità :)

... temo di non aver capito nulla ...
preferirei continuare a usare comandi dos e file bat ...
tipo un semplice del .... da lanciare ogni giorno assieme all'altro file batch che già ora rinomina prima del backup ....

in pratica vorrei arrivare a

del 00_doc_test_backup_2019-12-02-su-SERVER-questo-DEVE-esserci.txt

dove il pezzo variabile "2019-12-02" deve essere calcolato con la formula OGGI-2gg

Puoi aiutarmi anche in questo caso? :)

x_Master_x
03-12-2019, 22:33
Hai eseguito il batch? Penso di no altrimenti avresti visto l'ECHO...

reggio
04-12-2019, 11:09
Hai eseguito il batch? Penso di no altrimenti avresti visto l'ECHO...

Ciao, non avevo lanciato perchè credevo servisse "old file manager" o altro che non volevo installare ... non credevo che un codice così complesso funzionasse in dos ...

Ora ho lanciato e capito qualcosa :)

Ho provato a modificare per adattare, ma ancora non ho capito come debbo fare per ottenere la data in formato

YYYY-MM-DD: Come vedi sotto ho provato ma mi esce una data così: "019-12-102" ... cosa sbaglio?

@ECHO OFF
SetLocal EnableDelayedExpansion

SET N=2

SET i=100
FOR %%a in (31 28 31 30 31 30 31 31 30 31 30 31) do set /A "i+=1" & SET "dpm[!i!]=%%a"
FOR /F "tokens=1-3 delims=/" %%a in ("%DATE%") do (
SET /A "DD=1%%a-N, I=^!(((DD-101)>>31)+1), MM=1%%b-I, J=^!(MM-100), MM+=J*12"
SET /A "YYYY=%%c-J, dpm[102]+=^!(YYYY%%4), DD+=I*dpm[!MM!]"
)
SET "newDate=%DD:~1%/%MM:~1%/%YYYY%

SET "newDate=00_doc_test_backup_%YYYY:~1%-%MM:~1%-%DD%

ECHO %newDate%
PAUSE

ECHO Adesso cancello il file %newDate%.txt
PAUSE

DEL 00_doc_test_backup_019-12-102.txt

ECHO Adesso cancello il file su T:
PAUSE

DEL T:\BACKUP_CF\Giornaliero\Posta\00_doc_test_backup_2019-12-01-su-SERVER-questo-DEVE-esserci.txt

ECHO FATTO! :)
PAUSE

x_Master_x
07-12-2019, 10:53
Old Files Manager non si installa e comunque credo che utilizzare codice che non si sa gestire non è una grande idea, per questo ti consigliavo il mio programma

@ECHO OFF
SetLocal EnableDelayedExpansion

SET N=2

SET i=100
FOR %%a in (31 28 31 30 31 30 31 31 30 31 30 31) do set /A "i+=1" & SET "dpm[!i!]=%%a"
FOR /F "tokens=1-3 delims=/" %%a in ("%DATE%") do (
SET /A "DD=1%%a-N, I=^!(((DD-101)>>31)+1), MM=1%%b-I, J=^!(MM-100), MM+=J*12"
SET /A "YYYY=%%c-J, dpm[102]+=^!(YYYY%%4), DD+=I*dpm[!MM!]"
)
SET "newDate=%YYYY%-%MM:~1%-%DD:~1%"

ECHO del 00_doc_test_backup_%newDate%-su-SERVER-questo-DEVE-esserci.txt
PAUSE