ForFiles probleem delete files ouder dan x dagen

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

  • Zjemm
  • Registratie: Februari 2001
  • Laatst online: 19:23
Ik heb het volgende probleempje.

ik ben bezig met de tool "ForFiles" waarmee je bijvoorbeeld bestanden kan deleten die ouder zijn dan x dagen.

Forfiles -p c:\backup -s -m *.* -d -5 -c "cmd /c del /q @path"

dit werkt goed echter blijven de directories staan. en dan zou ik die handeling alsnog handmatig moeten uitvoeren, wat weer niet wenselijk is.

nu heb ik al op allerlei manieren geprobeerd om ook de direcrories te deleten maar dat wil nog niet echt vlotten. in verschillende fora al verschillende opties gevonden maar boden geen oplossing.

forfiles -p f:\users -s -m *.* -d -5 -c "CMD /C RMDIR @path"

forfiles -p f:\users -s -m *.* -d -5 -c "CMD /C "RD @path"

willen ook niet werken


heeft iemand hier ervaring mee? of zijn er goede andere alternatieven zonder tirth-party software?

opensecure.nl


  • sanfranjake
  • Registratie: April 2003
  • Niet online

sanfranjake

Computers can do that?

(overleden)
Misschien kan je met de powershell voor elkaar krijgen wat je wil? Mits je XP of hoger gebruikt... http://myitforum.com/cs2/...er-than-certain-days.aspx

Mijn spoorwegfotografie
Somda - Voor en door treinenspotters


Verwijderd

ik denk dat dat inderdaad beter is (powershell)

want die tool ForFiles zit al niet meer in de "Windows Server 2003 Resource Kit Tools"
(http://www.microsoft.com/...8c4790cffd&displaylang=en)

of ....?

Verwijderd

en anders kan je misschien iets met onderstaand batch-file, die de directory's list op de F:-schijf...

@echo off
for /f "tokens=1-4* skip=4" %%f in ('dir /s f:\*.*') do if "%%h" == "<DIR>" if not "%%i" LEQ ".." echo %%f %%g %%h %%i

:?

  • Zjemm
  • Registratie: Februari 2001
  • Laatst online: 19:23
powershell? hmm nog niet aan gedacht. het is voor op 2003 server dus ik zal eens kijken. reden dat ik niet met allerlij tirth-party tools aan de gang wil is omdat het nu nog een nette productie server is en ik allergisch ben voor te veel tools op een server.

Toch wel een gemist dat MS dit niet gewoon standaard mogelijk maakt in een server OS. In linux is het zo gepiept.

Forfiles zit trouwens standaard in de huidige 2003 server versies daar ik deze niet zlef los geinstalleerd heb. of hij moet meegekomen zijn met mijn robocopy installatie

[ Voor 18% gewijzigd door Zjemm op 19-12-2007 16:17 ]

opensecure.nl


  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 09-02 20:54

Sebazzz

3dp

Zjemm schreef op woensdag 19 december 2007 @ 16:13:
Toch wel een gemist dat MS dit niet gewoon standaard mogelijk maakt in een server OS. In linux is het zo gepiept.
Voor de user ja. Maar MS plakt blijkbaar liever overal een GUI op.

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


  • Zjemm
  • Registratie: Februari 2001
  • Laatst online: 19:23
@ Sebazzz: vanuit de GUI moet je ook alles handmatig selecteren en kun je er geen sceduled task van maken

opensecure.nl


  • ToFast
  • Registratie: Mei 2004
  • Laatst online: 25-01-2025
Zou het niet te maken hebben met de opdracht del (del.exe) vs deltree.exe?

  • sanfranjake
  • Registratie: April 2003
  • Niet online

sanfranjake

Computers can do that?

(overleden)
Zjemm schreef op woensdag 19 december 2007 @ 16:13:
Toch wel een gemist dat MS dit niet gewoon standaard mogelijk maakt in een server OS. In linux is het zo gepiept.
Is het, mits je de juiste parameters gebruikt in je script. Dat zal bij linux niet anders zijn neem ik aan?

Mijn spoorwegfotografie
Somda - Voor en door treinenspotters


Verwijderd

Zjemm schreef op woensdag 19 december 2007 @ 14:55:

forfiles -p f:\users -s -m *.* -d -5 -c "CMD /C "RD @path"

willen ook niet werken
probeer die "*.*" achter -m eens te vervangen door een "*".
De meeste directory's hebben nu eenmaal geen punt in hun naam...

[En inderdaad staat dit ForFiles.exe standaard op een Windows2003 server.....]

  • Zjemm
  • Registratie: Februari 2001
  • Laatst online: 19:23
jawel en daarom ook mijn vraag hier op GOT omdat ik er zelf niet meer uit kwam :) en het ook niet op andere wiki's/fora's kon vinden

@jskywalker: ik zal het even proberen thnx

[ Voor 14% gewijzigd door Zjemm op 19-12-2007 16:36 ]

opensecure.nl


  • Zjemm
  • Registratie: Februari 2001
  • Laatst online: 19:23
@jskywalker:

(even op een andere directory)
Forfiles -p F:\Software\Upload\Exchange -s -m * -d -5 -c "cmd /c del /q @path"

nu worden wederom de files ouder dan 5 dagen in de folder exchange en in de subfolders gedelete. Echter nog steeds blijven de subfolders staan die ik dan dus weer handmatig moet verwijderen.

helaas

opensecure.nl


Verwijderd

Zjemm schreef op woensdag 19 december 2007 @ 16:49:
@jskywalker:

(even op een andere directory)
Forfiles -p F:\Software\Upload\Exchange -s -m * -d -5 -c "cmd /c del /q @path"

nu worden wederom de files ouder dan 5 dagen in de folder exchange en in de subfolders gedelete. Echter nog steeds blijven de subfolders staan die ik dan dus weer handmatig moet verwijderen.

helaas
debugging time: ;)
Forfiles -p F:\Software\Upload\Exchange -s -m * -d -5 -c "cmd /c ECHO del /q @path" >C:\temp\what.bat

bekijk daarna c:\temp\what.bat, en leidt af wat er fout gaat.....

  • Zjemm
  • Registratie: Februari 2001
  • Laatst online: 19:23
@jskywalker:

Oke ga ik proberen

tevens vond ik nog dit:

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

zie laatste 2 posts in [Dos] Batch commando directories op datum maken en deleten


maar ook met of zonder de RMDIR lukt het me niet.

ik ga nog even jou eerder voorgestelde testen


@jskywalker: ik heb het volgende gedaan:

Forfiles -p F:\test -s -m * -c "cmd /c ECHO del /q @path" >C:\temp\what.bat

het volgende staat in de .bat:

del /q "F:\test\New Folder"
del /q "F:\test\New Text Document.txt"

maar als ik handmatig bijvoorbeeld de eerste: del /q "F:\test\New Folder" uitvoer krijg ik geen foutmelding (folder is al wel leeg) maar de folder word niet gedelete

Vreemde is dat als ik in de volgende regel:
Forfiles -p F:\Software\Upload\Exchange -s -m * -d -5 -c "cmd /c del /q @path"

del vervang door RMDIR (Forfiles -p F:\test -s -m * -c "cmd /c RMDIR /q @path") ik de volgende melding krijg:

The directory name is invalid.
ERROR: The system cannot find the file specified.

[ Voor 51% gewijzigd door Zjemm op 19-12-2007 17:20 ]

opensecure.nl


Verwijderd

gaat niet echt gemakkelijk in 'standaard' windows scripts....

dus toch maar powershell:
http://www.microsoft.com/...t/powershell/default.mspx

met het scriptje wat sanfranjake voorstelde...

  • Zjemm
  • Registratie: Februari 2001
  • Laatst online: 19:23
misschien niet makkelijk maar wellicht wel mogelijk

opensecure.nl


  • alt-92
  • Registratie: Maart 2000
  • Niet online

alt-92

ye olde farte

Kan je niet met robocopy /minage:5 spelen?
als je dan puur wil deleten, lege sourcedir opgeven, en logging kan je vertellen wat er deleted is.
Dry runs met /L (list), kan je nog testen ook.

En droog gezegd: forfiles... directory is geen file. ;)

[ Voor 14% gewijzigd door alt-92 op 19-12-2007 23:00 ]

ik heb een 864 GB floppydrive! - certified prutser - the social skills of a thermonuclear device


  • Zjemm
  • Registratie: Februari 2001
  • Laatst online: 19:23
@ alt-92: nee oke maargoed. we zoeken weer verder naar een oplossing

thnx voor de reacties.

opensecure.nl


  • Adelbert
  • Registratie: Januari 2007
  • Laatst online: 27-01-2021
Ik wil toch nog graag wat aandacht voor dit onderwerp. Ik ben een tijdje gelden tegen hetzelfde probleem aangelopen.

Mijn batch is als volgt (werkt zonder problemen):
code:
1
Forfiles -p d:\test-s -m *.* -d -0 -c "cmd /c del /q @path


Ik wil echter ook graag dat de folders ook verwijderd worden. Daarvoor dat ik hetvolgende stukje code in gedachten:

code:
1
Forfiles -p d:\test -s -m *.* -d -0 -c "cmd /c rmdir /q @path


Dit werkt jammer genoeg niet op deze manier.

De error die ik krijg: ERROR: No files found with the specified search criteria.

  • Adelbert
  • Registratie: Januari 2007
  • Laatst online: 27-01-2021
Beetje beunhaas maar het werkt wel:

code:
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
REM verwijderd alle bestanden ouder dan x dagen

Forfiles -p d:\test -s -m *.* -d -0 -c "cmd /c del /q @path

REM verwijderd alle lege mappen van deze maand

RMDIR d:\test\01%DATE:~-8%
RMDIR d:\test\02%DATE:~-8%
RMDIR d:\test\03%DATE:~-8%
RMDIR d:\test\04%DATE:~-8%
RMDIR d:\test\05%DATE:~-8%
RMDIR d:\test\06%DATE:~-8%
RMDIR d:\test\07%DATE:~-8%
RMDIR d:\test\08%DATE:~-8%
RMDIR d:\test\09%DATE:~-8%
RMDIR d:\test\10%DATE:~-8%
RMDIR d:\test\11%DATE:~-8%
RMDIR d:\test\12%DATE:~-8%
RMDIR d:\test\13%DATE:~-8%
RMDIR d:\test\14%DATE:~-8%
RMDIR d:\test\15%DATE:~-8%
RMDIR d:\test\16%DATE:~-8%
RMDIR d:\test\17%DATE:~-8%
RMDIR d:\test\18%DATE:~-8%
RMDIR d:\test\19%DATE:~-8%
RMDIR d:\test\20%DATE:~-8%
RMDIR d:\test\21%DATE:~-8%
RMDIR d:\test\22%DATE:~-8%
RMDIR d:\test\23%DATE:~-8%
RMDIR d:\test\24%DATE:~-8%
RMDIR d:\test\25%DATE:~-8%
RMDIR d:\test\26%DATE:~-8%
RMDIR d:\test\27%DATE:~-8%
RMDIR d:\test\28%DATE:~-8%
RMDIR d:\test\29%DATE:~-8%
RMDIR d:\test\30%DATE:~-8%
RMDIR d:\test\31%DATE:~-8%

  • Adelbert
  • Registratie: Januari 2007
  • Laatst online: 27-01-2021
Een nettere optie die ook gelijk de folders verwijderd.

code:
1
2
3
4
5
6
7
8
9
:: --- BATCH SCRIPT START --- 
@echo off 
setlocal 
set source=d:\testalbert
pushd "%source%" 
for /f "skip=10 delims=" %%a in ('dir /b /a:d /o:-d 2^>NUL') do rmdir /s /q "%%a" 
popd 
endlocal 
:: --- BATCH SCRIPT END ---

  • elevator
  • Registratie: December 2001
  • Niet online

elevator

Officieel moto fan :)

Ik gebruik gewoon zoiets:
forfiles.exe /D -5 /P C:\path-to-backups\Backup\ /M UserBackup*.bak /C "cmd /c del @path"
-- dat scheelt moeilijk doen met for en het interpreteren van dir output enzo :P
Pagina: 1