Avatar billede majsmarken Nybegynder
18. november 2004 - 07:46 Der er 23 kommentarer og
1 løsning

Program: Du vil slette filer ældre end ? dage - OK/Cancel

Dette er en slags udbygning af
http://www.eksperten.dk/spm/393648
men i bruger-interaktiv form.

Fra kommandolinien defineres hvilken path samt hvilke typer filer der skal slettes.

PurgeFiles <rootfolder\*.filetype>

Ved (bruger)opstart skal der komme en box op hvor man kan skrive et timetal samt [OK][Cancel].
Der skal selvfølge være en form for check af timetalsyntaxen (0-1000).
Programmet vil så slette filer ifølge <rootfolder\*.filetype> som er ældre end indtastede timetal.

At programmet derefter kunne fortælle hvor meget (antal filer/Mb) der blev slette kunne være et extra plus.

Det må meget gerne være skrevet i vbscript - så ka' jeg evt. selv fedte det til...

Mere info kan følge...
Avatar billede tofte Juniormester
19. november 2004 - 16:05 #1
dim filesys, filetxt, getname, path,deltype

function InType(str)

 
  str="."&Right(str,3)
  if Instr(LCase(deltype),","&LCase(str)&",")>0 then
    InType=true
  else
    InType=false
  end if

end function

deltime=0
If WScript.Arguments.Count < 2 Then
    WScript.Echo "Error in command. For Right use, type:" & vbCrLf _
    & "CScript PurgeFile.vbs [Folder] [Filetype1],[Filetype1],...." & vbCrLF & vbCrLf _
    & "EX:" & vbCrLf & "CScript PurgeFile.vbs C:\folder .pdf,.txt"
    WScript.Quit
End If
tmptid = InputBox("Angiv et timetal mellem 1 og 10000!")
If IsNumeric(tmptid) then
    if tmptid<10000 and tmptid>0 then
        deltime=cint(tmptid)
    end if   
end if

if delTime=0 then
    msgbox "Du skal indtaste et tal mellem 1 og 10000"
    Wscript.Quit
end if
deltype=","&Wscript.arguments(1)&","
delsize=0
foldername = Wscript.arguments(0)
Set filesys = CreateObject("Scripting.FileSystemObject")
set folder = filesys.getFolder(foldername)
Set filecoll = folder.Files

For Each fil in filecoll
    if (InType(fil.name)) AND (DateDiff("H",fil.dateCreated,now())>deltime) then
    delsize=delsize+fil.size
    fil.Delete(true)
    end if
Next
Wscript.echo "Der er ialt slettet "& delsize &" bytes."
Avatar billede majsmarken Nybegynder
19. november 2004 - 18:13 #2
... det ser rigtigt ud... bliver afprøvet i løbet af Weekenden/mandag...
Info følger...
Avatar billede majsmarken Nybegynder
22. november 2004 - 10:39 #3
Hmmm... Det virker dog ikke...
Den sletter ikke noget som helst og fortæller også [Der er ialt slettet 0 bytes]...
Prøvet forskellige kombinationen mht. filtype samt [Du skal indtaste et tal mellem 1 og 10000].
Avatar billede tofte Juniormester
22. november 2004 - 14:53 #4
det virker fint her. Jeg har en mappe C:\test1 som indeholder nogle filer af typen txt
Jeg skriver filnavn.vbs C:\test1 .txt

og filerne bliver slettet som ønsket
Avatar billede majsmarken Nybegynder
22. november 2004 - 22:20 #5
Hmmm...
Opretter nøjagtig samme mappe som du beskriver
C:\test1
indeholdende filen [tekst.txt] - 27/07 19:15 - Ikke READONLY!

Selve PurgeFiles.vbs ligger ved
E:\testGUI

I en command box skyder denne af
E:\testGUI\PurgeFiles.vbs C:\test1 .txt
Definere eks 5 timer

og [Der er ialt slettet 0 bytes]... og FILEN [tekst.txt] er der endnu !

Prøvet forskellige kombinationen mht. filtype osv...
Både i en [CMD] eller [COMMAND] box.

Hmmm...
Under XP (SP1/SP2 samt W2K - samme...
Avatar billede tofte Juniormester
23. november 2004 - 09:44 #6
Prøv at ændre dateCreated til DateLastModified i den 6. sidste linie
Avatar billede majsmarken Nybegynder
23. november 2004 - 15:08 #7
YES - det var bedre!!!
Mere info/feedback følger...
Avatar billede majsmarken Nybegynder
24. november 2004 - 10:16 #8
Det var så den del.

Filserveren bruges til semiautomatiske videoklip hvor brugerene kan/skal slette efter behov. Èn time =~ 13Gb.
TT:MM = Timer:Minutter  (Så der skal lige en lille udregning til undervejs...)

Brugerene vil gerne have følgende oplysninger under opstart:
1. Box
Du har XXX bytes fri / TT:MM på drev: ZZZ
Antal timer slettes bagud: 1 - 10000 [    ]

2. Box
XXX bytes / TT:MM frigivet
Du har XXX bytes fri / TT:MM på drev: ZZZ


Jeg fedter evt. selv teksterne til så brugerene forstår det  >;-)
Avatar billede tofte Juniormester
24. november 2004 - 11:36 #9
eg forstår ikke det sidste. Kan du lave et eksempel, som forklarer hvad der skal beregnes?
Avatar billede majsmarken Nybegynder
24. november 2004 - 12:34 #10
Pointen er at eks. tallet: "44.456.745 bytes frigivet" ka' brugerene ikke relatere til Timer:Minutter.
Derfor skal eks. dette tal 44.456.745 bytes omregnes til Timer:Minutter baseret på at 1 time er 13Gbyte

44.456.745 bytes => 3 Timer : 25 minutter (afrundet)
70.334.000 bytes => 5 timer : 25 minutter (afrundet)
120.874.000 bytes => 9 timer : 18 minutter (afrundet)

osv...

Lidt kringlet matematik men når først formelen er der så...
Avatar billede majsmarken Nybegynder
24. november 2004 - 15:29 #11
Hovsa - ovenstående udregningseksempel er forkert...
Avatar billede majsmarken Nybegynder
24. november 2004 - 16:12 #12
Lidt mere præcist:
1 frame = 144.000 bytes
1 sek = 3.600.000 bytes
1 min = 216.000.000 bytes
1 tim = 12.960.000.000 bytes

Hour=[int](bytes/12960000000)

Min=[int]((bytes-(Hour*12960000000) / 216000000)

120.874.000.000 bytes (~120Gb) => 9 timer : 20 min
70.334.466.000 bytes (~70Gb) => 5 timer : 26 min
456.900.000 bytes => 0 timer : 2 min

(Ja - det er store tal der rodes med - det er typisk filserverområder på 200-500 Gb)
Avatar billede tofte Juniormester
24. november 2004 - 20:08 #13
Hvis du erstatter den sidste linie med nedenstående burde det virke.

mn = 216000000
sizemn=delsize/mn
showmn=sizemn mod 60
showhr=cint((sizemn-showmn)/60)

msgbox "Der er slettet "&showhr&" timer og "&showmn&" min."
Avatar billede majsmarken Nybegynder
24. november 2004 - 21:09 #14
OK - jeg prøver at bygge lidt på det - jeg må ta' det ind imellem andre opgaver.
Foreløbig tak
Info følger...

Forresten: Så vidt jeg ka' forstå/se/læse så er det muligt at vælge flere forskellige filtyper i samme hug ?
[Filetype1],[Filetype1],....
Det synes jeg dog ikke virker - den tar' kun den først [Filetype1].

Det ER ønskeligt at kunne vælge flere filtyper i èt hug.
Avatar billede tofte Juniormester
24. november 2004 - 21:33 #15
jeg har igen problem med at slette forskellige filtyper.
filnavn C:\slet .ini,.inx

sletter både ini og inx filer
Avatar billede tofte Juniormester
24. november 2004 - 21:33 #16
men ikke noget med at buge mellemrum mellem!
Avatar billede majsmarken Nybegynder
24. november 2004 - 23:21 #17
OK - det er nok der at hunden er 'begravet' ...
Avatar billede tofte Juniormester
01. december 2004 - 10:55 #18
Virker det???
Avatar billede majsmarken Nybegynder
01. december 2004 - 12:48 #19
<tofte>: Jeg er lidt 'arbejdsramt' i disse dage - mere info følger...
Avatar billede majsmarken Nybegynder
02. januar 2005 - 16:22 #20
<tofte>: Jeg har ikke glemt dig - men er lige på et andet project pt.
Avatar billede majsmarken Nybegynder
23. februar 2005 - 10:51 #21
... nu har jeg endelig mulighed for at komme tilbage til dette project.
Siden da er der "opfundet" noget andet så dette ikke mere er så aktuelt...

Ellers tak for hjælpen...

Hvis du har links til nyttige sider med eksepmler på VBS'er så vil der være lidt at lege med i ledige stunder ???
Avatar billede tofte Juniormester
23. februar 2005 - 15:05 #22
Jeg bruger meget devguru.com, der er ikke så mange eksempler, men der er meget godt
29. oktober 2007 - 13:40 #23
Udbygning/ændring ved http://www.eksperten.dk/spm/802991 ???
20. januar 2008 - 22:19 #24
Udbygning/ændring ved http://www.eksperten.dk/spm/815313 - Anybody ?
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