Questione : Il DOS ammucchia lo scritto per copiare/lime di cancellazione con la data nel nome di schedario

Può qualcuno aiutarlo a scrivere uno scritto in lotti del DOS che farà quanto segue quando funzionamento: movimento del

1) tutte le lime con l'estensione di .bak o di .trn in un percorso di rete con una data nel nome di schedario che proviene più allora vecchio 1 settimana a partire dal giorno run.
Example: data 7/23/2010
Files del
Run in dispositivo di piegatura: Test_file_201007100020.trn
Test_file_201007220020.trn
Test_file_201007100020.bak
Test_file_201007100020.temp
The archiva Test_file_201007100020.trn, Test_file_201007100020.bak è spostato verso la posizione della rete, tutte le altre lime sono lasciate le lime di cancellazione del alone

2) con un .trn o un .bak dalla posizione della rete con una data nel nome di schedario più vecchio di 4 settimane da oggi:
Example: data 7/23/2010
Files del
Run in dispositivo di piegatura: Test_file_201006100020.trn
Test_file_201007220020.trn
Test_file_201006100020.bak
Test_file_201006100020.temp

The archiva Test_file_201006100020.trn, Test_file_201006100020.bak è cancellato dalla posizione della rete, tutte le altre lime è lasciato il alone
class= del

Risposta : Il DOS ammucchia lo scritto per copiare/lime di cancellazione con la data nel nome di schedario

L'approvazione, andante indietro a dove ero -1 cambia fa e correggendo il problema là (stavo usando %%~tA anziché %%~nA per ottenere la data da He archivo il nome), vede come questa va.

~bp
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
@echo fuori
EnableExtensions setlocal EnableDelayedExpansion
 
Il rem definisce le posizioni della destinazione e di fonte ed archiva i modelli per copiare
regolare SourceDir= c:\temp\EE26352923\source
regolare DestDir= c:\temp\EE26352923\dest
regolare MatchExts=*.trn *.bak
 
Il rem ottiene l'odierna data e converte in Julian
per /F “tokens=2-4 delims=/„ %%A da ("%DATE%") regolano TodaysDate=%%C%%A%%B
chiamata: jdate TodaysJDate %TodaysDate%
 
Il rem si muove verso l'indice di fonte, scopre che tutte le lime abbinano il modello voluto
pushd “%SourceDir%„
per %%A dentro (%MatchExts%) fare (
  Il rem ottiene la data di modifica delle lime, convertito a Julian
  regolare FileDate=%%~nA
  chiamata: jdate FileJDate! FileDate: ~-12.8!
  Il rem calcola l'età della lima in giorni, se i più vecchio di 7 giorni si muovono verso la destinazione
  regolare /A FileAge=%TodaysJDate%-! FileJDate!
  se! FileAge! 7 GTR spostano “%%~A„ “%DestDir%„
)
popd
 
Il rem si muove verso l'indice di destinazione, scopre che tutte le lime abbinano il modello voluto
pushd “%DestDir%„
per %%A dentro (%MatchExts%) fare (
  Il rem ottiene la data di modifica delle lime, convertito a Julian
  regolare FileDate=%%~nA
  chiamata: jdate FileJDate! FileDate: ~-12.8!
  Il rem calcola l'età della lima in giorni, se una cancellazione di più vecchio di 28 giorni dalla destinazione
  regolare /A FileAge=%TodaysJDate%-! FileJDate!
  se! FileAge! 28 del GTR “%%~fA„
)
popd
 
uscire /b
 
Sottoprogramma di rem per calcolare la data di Julian
: data-stringa rinviare-variabile del jdate (YYYYMMDD) 
  regolare DateStr=%~2
  regolare yy=%DateStr: ~0.4%
  regolare /A mm=1%DateStr: ~4.2%-100
  regolare /A dd=1%DateStr: ~6.2%-100
  regolare /a “yy=10000%yy% %%10000, mm=100%mm% %% 100, dd=100%dd% %% 100„
  regolare /a %~1=dd-32075+1461* (yy+4800+ (mm-14) /12) /4+367* (mm-2- (mm-14) /12*12) /12-3* ((yy+4900+ (mm-14) /12) /100) di /4
  uscire /b
Altre soluzioni  
 
programming4us programming4us