[Dos] Batch commando directories op datum maken en deleten

Pagina: 1
Acties:
  • 1.240 views sinds 30-01-2008
  • Reageer

  • Kamikazi
  • Registratie: Juli 2001
  • Niet online
Op D: staat een map MSSQL met daarin de data. Ik wil elke dag (als de backup procedure start) een pre batch file laten meedraaien in de backup config, die in E:\MSSQLBKP een map met daarin de datum aanmaakt en alle bestanden uit D:\MSSQL kopieert naar E:\MSSQLBKP\DATUM

Nu kan ik met

code:
1
MKDIR %DATE%


Een directory aanmaken. Tijdens het uitvoeren van dit commando maakt hij echter 2 mappen aan, nml:

vr
23-04-2004

Ik had dan gedacht dat dit commando
code:
1
copy D:\MSSQL\*.* E:\MSSQLBKP\%DATE%\


Ik mijn gewenste resultaat zou behalen. Het laatste bestand uit D:\MSSQL wordt dan echter in E:\MSSQLBKP\ als %date% opgeslagen en niet in de juiste directory.

Dus vraag 1 is: Hoe krijg ik het voor elkaar dat een batch bestand directories aanmaakt op datum en hierin de juiste bestanden plaatst?

Vraag 2 gaat hierop door.

Als straks het batch bestand elke dag draait en dus elke dag directories maakt op datum, ontstaat er een wildgroei van directories. Ik wil in het batch commando aangeven dat als er een directory is die op die dag ouder is als 14 dagen, dat hij deze directory dan weggooit. Ik kan echter nergens vinden of dit mogelijk is, zo ja hoe.

Dus vraag 2 is: Hoe krijg ik voor elkaar dat in een batch bestand wordt gekeken of er directories ouder als 14 dagen zijn en dat hij vervolgens de oudste map weggooit?

Verwijderd

probeer eens met MKDIR "%DATE%", wellicht maakt ie er dan 1 naam van i.p.v. te splitten bij iedere spatie (misschien ook bij het COPY commando)

Zover ik weet kan je niet op de conditie vna datum iets doen in batch, dan zul je een apart programmaatje moeten downloaden, bijvoorbeeld een waar je een bestand meegeeft en een datum en dat het returned of iets wel of niet ouder is dan de gestelde datum.

[ Voor 50% gewijzigd door Verwijderd op 23-04-2004 09:58 ]


  • Maasluip
  • Registratie: April 2002
  • Nu online

Maasluip

Frontpage Admin

Kabbelend watertje

Ja, het vervelende met %date% is dat hij de dag en de datum uitgeeft. Als je het niet erg vindt om de dag erbij te hebben kun je
 mkdir "%DATE%"
gebruiken. Alleen jammer dat de sortering op alfabetische volgorde dan weg is.

edit:
Hmz, daar win ik het natuurlijk nooit van he? /Spuit 11

[ Voor 16% gewijzigd door Maasluip op 23-04-2004 09:59 ]

Signatures zijn voor boomers.


  • Kamikazi
  • Registratie: Juli 2001
  • Niet online
probeer eens met MKDIR "%DATE%", wellicht maakt ie er dan 1 naam van i.p.v. te splitten bij iedere spatie (misschien ook bij het COPY commando)
Das een leuke... nu maakt ie er "vr 23-04-2004" van. Alleen het jammere is dat ik alleen de nummerieke datum wil hebben.

  • Kamikazi
  • Registratie: Juli 2001
  • Niet online
Met behulp van deze link

http://www.winnetmag.com/Article/ArticleID/13575/13575.html

Heb ik nu het volgende stukje batch command:

code:
1
2
3
4
5
6
7
8
9
@ECHO OFF
for /f "tokens=1,2" %%u in ('date /t') do set d=%%v
for /f "tokens=1" %%u in ('time /t') do set t=%%u
if "%t:~1,1%"==":" set t=0%t%
set timestr=%d:~6,4%%d:~3,2%%d:~0,2%
E:
CD \TEST
MKDIR %timestr%
COPY D:\MSSQL\*.* E:\MSSQLBKP\%timestr%


Deze code werkt perfect! Dus vraag 1 opgelost... maar nu vraag 2.

  • wens
  • Registratie: Juni 2002
  • Laatst online: 16:51
In de Resource Kit van Windows NT 4.0 en Windows 2000 zit het commando forfiles.exe.

Hiermee kun je bestanden en mappen op datum of leeftijd selecteren en dan een commando geven: delete in jouw geval.

[ Voor 4% gewijzigd door wens op 23-04-2004 10:29 ]


  • Kamikazi
  • Registratie: Juli 2001
  • Niet online
Ik ben er even mee aan de slag gegaan.

forfiles -pe:\test -d-14 -c"CMD /C DEL E:\"@FILE"\*.* /Q"

Ik krijg dan alleen (ondanks de /Q opmerking) de vraag of ik alle bestanden wil verwijderen. Maar bedankt voor de tip, ik kijk of ik er hiermee uit kan komen!

  • Kamikazi
  • Registratie: Juli 2001
  • Niet online
Opgelost door gebruik te maken van het RMDIR commando. Bedankt :)
Pagina: 1