Avatar billede pimanx Nybegynder
20. januar 2009 - 10:20 Der er 6 kommentarer og
1 løsning

Hjælpt til forfiles batch kørsel

Jeg har haft kigget på forfiles for at lave en batch kørsel, som kan slette alle filer samt undermapper i en bestemt mappe, som er ældre end x antal dage.

Mens det virker fint for alle filer, så vil det ikke fungere med mapper. Her er hvad jeg kører (antal dage er sat til 0, så det er muligt at teste):

forfiles /P C:\Temp\test\ /S /D -0 /M *.* /C "cmd /C rd @path /Q"

Som giver følgende:

ERROR: No files found with the specified search criteria.

Hvis jeg udskifter "rd" med "del" så sletter den filer i mapperne - men mapperne skal jo også med.

Nogen gode ideer?
Avatar billede bertelbrander Praktikant
20. januar 2009 - 23:26 #1
Jeg kendte ikke forfiles, men den ser meget brugbar ud, tak for hint.

Men så vidt jeg kan se understøtter den ikke mapper/foldere :-(
Det burde være trivilet at lave en bat fil der sletter alle tomme mapper, kan det bruges?
Ellers kan man/jeg godt strikke en bat-fil sammen der sletter alle mapper der er ældre end xx dage, men det er ikke helt trivielt...
Avatar billede enhydralutris Nybegynder
21. januar 2009 - 21:45 #2
har du prøvet at bruge:

forfiles /P C:\Temp\test\ /M *.* /S /D -0 /C "cmd /C if @isdir==TRUE (rd @path /S /Q) else (del @path /S)"

her tjekker den om det er er en fil eller mappe, hvis det er en mappe bruger den rd, ellers bruger den del
Avatar billede pimanx Nybegynder
22. januar 2009 - 12:01 #3
Med ovenstående finder den rigtigt nok filerne og sletter dem, men den sletter ikke mapperne. Hvis jeg så kører den igen efterfølgende, hvor alle filer er slettet, giver den samme fejl som tidligere:

ERROR: No files found with the specified search criteria.
Avatar billede enhydralutris Nybegynder
22. januar 2009 - 17:18 #4
aha... det er næsten indlysende xD (medmindre det selvølgelig ikke var det du ville have?)

*.* = filer
* = filer + mapper
(kan ikke lige huske søgningen for kun mapper... ved hellere ikke om den eksisterer i simpel form ;D)

men..

forfiles /P C:\Temp\test\ /M * /S /D -0 /C "cmd /C if @isdir==TRUE (rd @path /S /Q) else (del @path /S)"

håber det hjælper (testede det på min egen computer... og der virkede det som jeg havde forsået det skulle ;-) )
Avatar billede pimanx Nybegynder
23. januar 2009 - 09:12 #5
Åh for søren, ja du har jo helt ret, enhydralutris!

forfiles /P C:\Temp /M * /S /D -90 /C "cmd /C rd @path /S /Q"

Så sletter den alle mapper, undermapper og filer som er ældre end 90 dage. RD kan også slette filer, så det er ikke nødvendig med en if-else :)
Avatar billede enhydralutris Nybegynder
23. januar 2009 - 10:57 #6
Var ikke helt sikker på om rd slettede filer ;-) og hellere være på den sikre side end at leve på en klippekant med bind for øjnene :p
Avatar billede PhilipWahlstrom Nybegynder
11. oktober 2011 - 10:23 #7
Du siger at
*.*=filer
*=filer+ mapper

hvad så hvis man vil have at den kun sletter mapper?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester