karrog Skrevet 15. januar 2007 Del Skrevet 15. januar 2007 Hei. Jeg er på jakt etter et script som kan slette filer fra en mappe (gjerne innholdet i undermapper også) som er eldre enn f.eks 14 dager. Har et script, men er usikker på hva det egentlig gjør. Har testet det, men det skjer ingen ting, eneste jeg har fått til er å slette alt innhold i mappa jeg tester mot. Ta en titt på scriptet under, hva må jeg kjøre i cmd for å få slettet filer som er over 14 dager gamle? Er det noen som har peil på scripts, som kan hjelpe meg litt på vei. Kjører windows 2000 plattform. ::::::::::::::::::::::::::::::::SCRIPTET::::::::::::::::::::::::::::::::::::::::: @echo off SET OLDERTHAN=%1 IF NOT DEFINED OLDERTHAN GOTO SYNTAX set FileDir=%~2 if "%FileDir%"=="" set FileDir=. for /f "tokens=2" %%i in ('date /t') do set thedate=%%i set mm=%thedate:~0,2% set dd=%thedate:~3,2% set yyyy=%thedate:~6,4% set /A dd=%dd% - %OLDERTHAN% set /A mm=%mm% + 0 :LOOPDATE if /I %dd% GTR 0 goto DONE set /A mm=%mm% - 1 if /I %mm% GTR 0 goto ADJUSTDAY set /A mm=12 set /A yyyy=%yyyy% - 1 :ADJUSTDAY if %mm%==1 goto SET31 if %mm%==2 goto LEAPCHK if %mm%==3 goto SET31 if %mm%==4 goto SET30 if %mm%==5 goto SET31 if %mm%==6 goto SET30 if %mm%==7 goto SET31 if %mm%==8 goto SET31 if %mm%==9 goto SET30 if %mm%==10 goto SET31 if %mm%==11 goto SET30 if %mm%==12 goto SET31 :SET31 set /A dd=31 + %dd% goto LOOPDATE :SET30 set /A dd=30 + %dd% goto LOOPDATE :LEAPCHK set /A tt=%yyyy% %% 4 if not %tt%==0 goto SET28 set /A tt=%yyyy% %% 100 if not %tt%==0 goto SET29 set /A tt=%yyyy% %% 400 if %tt%==0 goto SET29 :SET28 set /A dd=28 + %dd% goto LOOPDATE :SET29 set /A dd=29 + %dd% :DONE if /i %dd% LSS 10 set dd=0%dd% if /I %mm% LSS 10 set mm=0%mm% for %%i in (%FileDir%\*.*) do (set FileName=%%i call :PROCESSFILE %%~ti) set mm= set yyyy= set dd= set thedate= goto EXIT :SYNTAX ECHO. ECHO USAGE: ECHO DELOLD X [Dir] ECHO Where: echo X is the number of days previous to Today. echo Dir is the optional directory where files exist. Defaults to current directory. ECHO. ECHO EX: "DELOLD 5" Deletes files older than 5 days. echo "DELOLD 120 c:\temp Deletes files from the c:\temp directory that are older echo than 120 days. GOTO EXIT :PROCESSFILE set temp=%1 set fyyyy=%temp:~6% if /I %fyyyy% LSS 100 set fyyyy=20%fyyyy% if /I %fyyyy% GTR 2069 set fyyyy=19%temp:~6% set fmm=%temp:~0,2% set fdd=%temp:~3,2% :: +*************************************+ :: | This is where the files are deleted | :: | Change the ECHO command to DEL to | :: | delete. ECHO is used for test. | :: +*************************************+ if /I %yyyy%/%mm%/%dd% GEQ %fyyyy%/%fmm%/%fdd% (echo %FileName%) set temp= set fyyyy= set fmm= set fdd= :EXIT :::::::::::::::::::::: END SCRIPT :::::::::::::::::::::::::::::::::::::::::::::::: Lenke til kommentar https://www.diskusjon.no/topic/699203-sletting-av-filer-som-er-x-dager-gamle-via-bat/
geir__hk Skrevet 15. januar 2007 Del Skrevet 15. januar 2007 (endret) Tviler på at det er gjennomførbart med BAT med mindre du har ei exe-fil du kan kale opp og som kan gjøre jobben med hver enkel fil. Anbefaler deg heller å lære å lage en VBS-fil. Det er et scriptspråk som jeg bruker å si svever et sted midt imellom BAT og et programmeringsspråk som f.ex C eller Java. Du kan ikke lage fullverdige program i VBS pga. det mangler GUI og er liksom ikke ordentlig objekt-orientert, men til ditt formål er det perfekt. Endret 15. januar 2007 av geir__hk Lenke til kommentar https://www.diskusjon.no/topic/699203-sletting-av-filer-som-er-x-dager-gamle-via-bat/#findComment-7730377
backup Skrevet 16. januar 2007 Del Skrevet 16. januar 2007 Har laget et vbs-script som gjør jobben i en mappe du velger: Set oShell = CreateObject("Shell.Application") On Error Resume Next d = InputBox("Tast inn antall dager" & vbcrlf _ & "(slette filer som er eldre enn)") If d ="" Or IsNumeric(d) = False Then wscript.quit Set Path = oShell.BrowseForFolder (0,"Velg slette-Mappe:",0,0) Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.GetFolder(Path) Set files=f.Files For Each fl in files if DateDiff("d",fl.DateCreated,now) > CInt(d) Then fso.DeleteFile(f & "\" & fl.name) End if Next Lagre scriptet med etternavnet vbs som f.eks. slette.vbs, dobbelklikk script-ikonet, og du er i gang. Lenke til kommentar https://www.diskusjon.no/topic/699203-sletting-av-filer-som-er-x-dager-gamle-via-bat/#findComment-7733138
karrog Skrevet 16. januar 2007 Forfatter Del Skrevet 16. januar 2007 Heisann, og takker for hjelpen, men får dette ikke til å fungere. Jeg får opp dialogboksen som spør etter antall dager, og så får jeg opp dialogboksen som bestemmer mappen, men når jeg trykker på ok, skjer det ingen ting.. Lenke til kommentar https://www.diskusjon.no/topic/699203-sletting-av-filer-som-er-x-dager-gamle-via-bat/#findComment-7733621
backup Skrevet 16. januar 2007 Del Skrevet 16. januar 2007 (endret) Heisann, og takker for hjelpen, men får dette ikke til å fungere. Jeg får opp dialogboksen som spør etter antall dager, og så får jeg opp dialogboksen som bestemmer mappen, men når jeg trykker på ok, skjer det ingen ting.. 7733621[/snapback] 1. Tast inn antall dager, f.eks. 5 2. Velg mappe der filene skal slettes, klikk ok 3. Se i mappen, der skal filene være borte som er mer enn f.eks. 5 dager gamle. Filslettingen går automatisk etter at du har valgt mappe og klikket ok! Edit. Hvis du limer inn noen gamle filer i en ny mappe for liksom å teste, fungerer ikke scriptet, fordi filene i den nye mappe blir regnet som nye filer i windows! Så du må teste på filer i en gammel mappe der filene er gamle. Endret 16. januar 2007 av backup Lenke til kommentar https://www.diskusjon.no/topic/699203-sletting-av-filer-som-er-x-dager-gamle-via-bat/#findComment-7733700
karrog Skrevet 16. januar 2007 Forfatter Del Skrevet 16. januar 2007 Jeg får det ikke til, har en mappe som har ligget der en stund nå, og jeg skriver 2 dager, for de lå der lenge før helga. men det går ikke. Jeg kjører windows 2000 på den aktuelle maskina... tror ikke det skal ha noe å si.. Lenke til kommentar https://www.diskusjon.no/topic/699203-sletting-av-filer-som-er-x-dager-gamle-via-bat/#findComment-7733883
backup Skrevet 16. januar 2007 Del Skrevet 16. januar 2007 Ok, i scriptet, ta bort linjen: On Error Resume Next, lagre og test. Nå skulle du få en feilmelding hvis det oppstår feil i scriptet. Rapporter feilmeldingen her. Lenke til kommentar https://www.diskusjon.no/topic/699203-sletting-av-filer-som-er-x-dager-gamle-via-bat/#findComment-7734480
karrog Skrevet 17. januar 2007 Forfatter Del Skrevet 17. januar 2007 Sjekk vedlegget for feilmelding... error.doc Lenke til kommentar https://www.diskusjon.no/topic/699203-sletting-av-filer-som-er-x-dager-gamle-via-bat/#findComment-7740211
backup Skrevet 17. januar 2007 Del Skrevet 17. januar 2007 Har rettet en feil i scriptet. Her er den nye versjon som bør funke: Set oShell = CreateObject("Shell.Application") d = InputBox("Tast inn antall dager" & vbcrlf _ & "(slette filer som er eldre enn)") If d ="" Or IsNumeric(d) = False Then wscript.quit Set Path = oShell.BrowseForFolder (0,"Velg slette-Mappe:",0,0) Set folderPath= Path.Items.Item Folder = folderPath.path Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.GetFolder(Folder) Set files=f.Files For Each fl in files if DateDiff("d",fl.DateCreated,now) > CInt(d) Then fso.DeleteFile(f & "\" & fl.name) End if Next Rapporter hvordan det funker hos deg. Takker for ditt samarbeid! Lenke til kommentar https://www.diskusjon.no/topic/699203-sletting-av-filer-som-er-x-dager-gamle-via-bat/#findComment-7740423
karrog Skrevet 17. januar 2007 Forfatter Del Skrevet 17. januar 2007 Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaah Har testet litt nå, og dette ser veldig bra ut. Supert Tusen takk, hjelper meg mye Lenke til kommentar https://www.diskusjon.no/topic/699203-sletting-av-filer-som-er-x-dager-gamle-via-bat/#findComment-7740860
karrog Skrevet 18. januar 2007 Forfatter Del Skrevet 18. januar 2007 Hvordan er det å dra den litt lenger.. Jeg skulle gjerne hatt den til å slette i en valgt mappe og dens undermapper. Er det en enkel kommando linje du kan slenge inn slik at den sletter filene som er eldre en X antall dager i undermappene også? Roger Lenke til kommentar https://www.diskusjon.no/topic/699203-sletting-av-filer-som-er-x-dager-gamle-via-bat/#findComment-7748860
backup Skrevet 18. januar 2007 Del Skrevet 18. januar 2007 Har laget følgende vbs-script som skal gjøre jobben i den valgte mappe alle submapper innen den valgte mappe, men test og og rapporter tilbake. Dim arrFolders(), vFolder intSize = 0 : strComputer = "." Set oShell = CreateObject("Shell.Application") d = InputBox("Tast inn antall dager" & vbcrlf _ & "(slette filer som er eldre enn.)") If d ="" Or IsNumeric(d) = False Then wscript.quit Set fso = CreateObject("Scripting.FileSystemObject") On Error Resume next Set cCommand = CreateObject("Scripting.FileSystemObject") Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set oShell = CreateObject("Shell.Application") c = "Velg slette-Mappe:" Set Path = oShell.BrowseForFolder (0,c,0,0) Set folderPath= Path.Items.Item strFolderName = folderPath.path Set colSubfolders = objWMIService.ExecQuery _ ("Associators of {Win32_Directory.Name='" _ & strFolderName & "'} " & "Where AssocClass = Win32_Subdirectory " _ & "ResultRole = PartComponent") ReDim Preserve arrFolders(intSize) arrFolders(intSize) = strFolderName intSize = intSize + 1 For Each objFolder in colSubfolders GetSubFolders strFolderName Next Sub GetSubFolders(strFolderName) Set colSubfolders2 = objWMIService.ExecQuery _ ("Associators of {Win32_Directory.Name='" & strFolderName & "'} " _ & "Where AssocClass = Win32_Subdirectory " & "ResultRole = PartComponent") For Each objFolder2 in colSubfolders2 strFolderName = objFolder2.Name ReDim Preserve arrFolders(intSize) arrFolders(intSize) = strFolderName intSize = intSize + 1 GetSubFolders strFolderName Next : End Sub For i = Ubound(arrFolders) to 0 Step -1 strFolder = arrFolders(i) set vFolder = CCommand.GetFolder(strFolder) Set f = fso.GetFolder(vFolder) Set files=f.Files For Each fl in files if DateDiff("d",fl.DateCreated,now) > CInt(d) Then fso.DeleteFile(f & "\" & fl.name) End if Next Next : MsgBox("Ferdig") Lenke til kommentar https://www.diskusjon.no/topic/699203-sletting-av-filer-som-er-x-dager-gamle-via-bat/#findComment-7749610
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå