Avatar billede nmouse Nybegynder
18. januar 2001 - 08:35 Der er 5 kommentarer og
1 løsning

WSH - checke filer er mere end 14 dage, og slettes - hviket program.

Hej - Det er faktisk 2 spørgsmål.
Det 1. er selve problemet.
Jeg skal på serveren køre en check at på fællesdrevet må filerne ikke være mere end 14 dage gamle, og det havde jeg tænkt på at jeg ville lave i .WSH eller hedder det .WSF
- hvis der var nogle der evt havde en start ide, som jeg kunne gå videre med, jeg kender intet til programering, så det må godt være udpenslet.

Og det andet spørgsmål, hvilket program skal jeg lave det i, en alm. editor som NoteTab, eller findes der et rigtigt program til at skrive de filer i...

Som man nok kan høre, så er det ikke meget jeg kender til programering....

Mvh nmouse
Avatar billede mnv Nybegynder
18. januar 2001 - 09:25 #1
Du kan nøjes med at bruge Notepad!!!
Held og Lykke:-)
Avatar billede nlbgf Nybegynder
09. marts 2001 - 16:18 #2
Hvis du kender en som har abonnement på Alt om Data, kan du finde en artikel i nyeste nummer som omhandler emnet med at søge harddisken igennem efter bestemte filer. Artiklen er sidst i den nyeste eksklusiv udgave, som kun udkommer til abonnenter. Prøv at kigge lidt på det, det er ikke ret svært...
Avatar billede nmouse Nybegynder
16. marts 2001 - 00:58 #3
Den virker ikke ordentligt, jeg har sat på den sammen med en ven, så desværre.... :-(
Avatar billede afh Nybegynder
19. marts 2001 - 18:39 #4
I VBScript har du muligheden for at bruge \"DateDiff\" funktionen til at teste netop det.

Her er et script der tager 2 paramtre: et foldernavn samt et antal dage (for hvor gamle filerne må være). De for gamle filer listes i  logfil.txt.

mvh Anders

\' START chkdate.vbs
\'
\' chkdate.vbs: Checker filer i en folder der
\' er ældre end et angivet antal dage.
\'
\' Scriptet tager to argumenter:
\' Navn på folderen der skal checkes i,
\' samt antal dage filerne må være
\' før de bliver listet.
\'
\' De filer der er for gamle skrives i
\' filen \"logfil.txt\".
\'
Dim file, dFile
Dim folder, sFolder
Dim nDays
Dim logfile, fso, oArgs
Const ForAppending = 8

\' Parametrene læses.
Set oArgs = Wscript.Arguments

\' Check at der er angivet netop to parametre.
If oArgs.Count <> 2 Then
    Wscript.Echo \"chkdate.vbs:\"
    Wscript.Echo \"\"
    Wscript.Echo \"cscript chkdate.vbs [folder] [antal dage]\"
    Wscript.Echo \"\"
    Wscript.Echo \"Begge parametre SKAL angives.\"
    Wscript.Quit 1
End If

\' Check at der er angivet et tal som anden
\' parameter.
If Not IsNumeric(oArgs(1)) Then
    Wscript.Echo \"FEJL: Parameteren \'\" & oArgs(1) & \"\' er ikke et tal.\"
    Wscript.Echo \"      Angiv antal dage filerne må være.\"
    Wscript.Quit 1
End If       

\' Læs de to parametre i korrekt format.
sFolder = CStr(oArgs(0))
nDays = CInt(oArgs(1))

\' Check at der er angivet en eksisterende folder.
Set fso = Wscript.CreateObject(\"Scripting.FileSystemObject\")
If Not fso.FolderExists(sFolder) Then
    Wscript.Echo \"FEJL: Folderen \" & sFolder & \" eksisterer ikke.\"
    Wscript.Echo \"      Angiv en eksisterende folder.\"
    Wscript.Quit 1
End If
Set folder = fso.GetFolder(sFolder)

\' Åben logfilen resultatet appendes til
Set logfile = fso.OpenTextFile(\"logfil.txt\", ForAppending, True)
logfile.WriteLine \"LOGFIL.TXT\"
logfile.WriteLine \"Check udført \" & Date & \". Filer ældre end \" & nDays & \" dage, i folderen \" & sFolder
logfile.WriteLine \"------------------------------------------------------------------\"

\' Check af alle filer i folderen ift. den angivne periode.
For Each file In folder.Files
    dFile=file.DateLastModified
    If DateDiff(\"d\", dFile, Now) >= nDays Then
        logfile.WriteLine file.Name & \" (\" & file.DateLastModified & \").\"
    End If
Next

logfile.WriteLine \"\"
Wscript.Echo \"Check er gennemført.\"
Avatar billede afh Nybegynder
20. marts 2001 - 11:41 #5
Lige en tilføjelse:
Hvis du vil have scriptet til at virke rekursivt, kan du lægge \"For Each file ...\" løkken ned i en sub-funktion. Erstat løkken med en linie som f.eks:

FindOldFiles folder, nDays

Slet linien \"Dim file, dFile\" øverst i scriptet, og sæt så ind til sidst i filen:

Sub FindOldFiles(folder, days)
    Dim file, dFile, subfold
    \' Check af alle filer i folderen ift. den angivne periode.
    For Each file In folder.Files
        dFile=file.DateLastModified
        If DateDiff(\"d\", dFile, Now) >= days Then
            logfile.WriteLine file.Path & \" (\" & file.DateLastModified & \").\"
        End If
    Next
    For Each subfold In folder.SubFolders
        logfile.Writeline subfold.Path
        FindOldFiles subfold, days
    Next
End Sub

Nu vil scriptet gennemløbe den angivne folder og alle underfoldere.

Det hele blev vist lidt rodet, det er samlet lidt hurtigt fra et par lignende scripts jeg havde liggende, men det skulle virke som ønsket.

mvh,
Anders
Avatar billede nmouse Nybegynder
21. maj 2001 - 08:30 #6
Jeg har fundet et gammelt DOS program, som sammen med et andet DOS program kunne gøre dette, tak alligevel, afh får point...
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

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