[XP] Data splitsen / verplaatsen tussen schijven zonder RAID

Pagina: 1
Acties:

  • Valigarmanda
  • Registratie: Mei 2003
  • Laatst online: 23-01 09:56
Hallo allemaal,

Voor 't werk is er een PC die dag en nacht beelden van de camera's opneemt. Dit werkt nu allemaal goed onder XP mediacenter edition. Echter, in deze pc zitten twee harde schijven van 500gb. Ik heb van alles geprobeerd om deze in RAID opstelling te laten werken, maar dit ging gewoonweg niet stabiel (vista). Toen ben ik over/teruggestapt op XP MC. Deze deed bij installatie al moeilijk over RAID en vanwege eerdere problemen heb ik toen maar niet voor RAID gekozen.

Inmiddels werkt het dus onder XP allemaal prima. Echter, nu ga ik opnemen en dan kan ik maar één map kiezen om de beelden op te slaan. Gevolg is dat ik dus hooguit 1 van de schijven kan gebruiken en dus 450gb over heb. Dit is nogal zonde en via de software die ik gebruik (Active Webcam of WinTV) is het niet mogelijk meerdere mappen of schijven aan te geven. Media center zelf geeft uberhaupt geen beeld (decoderfout... 8)7) dus dit is ook geen optie.

Nu is mijn vraag of het mogelijk is om automatisch of regelmatig de beelden over te laten hevelen van de ene naar de andere schijf als de map op één van de schijven vol is. Ik ben eventueel ook bereid om andere software aan te schaffen die meerdere opslagmappen toestaat, maar deze heb ik nog niet kunnen vinden. Heeft er iemand suggesties die niet met RAID opstellingen te maken hebben?

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

alt-92

ye olde farte

Een hele simpele script oplossing:
Visual Basic:
1
2
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.MoveFile "C:\opnames\*.avi" , "D:\Archive\"


Schedulen, eventueel met een controle op tijd/datum erin, noem maar wat.
Zo lastig moet dat denk ik niet zijn om daar wat op te bedenken.

Een wat meer hardware/OS matige oplossing is de tweede disk via een mountpoint als een directory gebruiken, maar niet alle software gaat daar netjes mee om (zelfs Windows Explorer zelf niet als het om het aangeven van de beschikbare schijfruimte gaat om maar wat te noemen).

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


  • Valigarmanda
  • Registratie: Mei 2003
  • Laatst online: 23-01 09:56
Bedankt voor deze oplossing. Ik begrijp echter niet helemaal hoe ik dit toe kan passen. Heb vrij weinig verstand van dit soort dingen (doe het vaak met .bat filetjes). Hoe heet het precies (dan kan ik erop googlen) of heb je (een site met) uitleg voor me?

  • WEBsel
  • Registratie: Maart 2001
  • Laatst online: 17:22
Kan je die 2e schijf niet formatteren en dan mounten aan een folder op die andere schijf? Alleen als het NTFS is trouwens.

Hmz, dan zit je nog steeds op de ene of op de andere fysieke vaste schijf te werken...

[ Voor 26% gewijzigd door WEBsel op 01-04-2008 23:50 . Reden: Hmz ]

Asrock Z77Pro4-M, i7 3770K ; Corsair PC3-12800K CMV8GX3M1A1600C11 x2 ; Zotac GeForce GTX1050 Ti 4GB ; Crucial MX500 500GB; Toshiba DT01ACA300 ; HP M375mw ; Synology DS218j + WD60PURZ ; TP-Asus RT-AC68U asuswrt-merlin 386.10 ; Sony Xperia XZ2 P ; Mazda 323


  • sjongenelen
  • Registratie: Oktober 2004
  • Laatst online: 19-02 21:56
ehm, je kunt ook gewoon de taakplanner gebruiken? met een simpel batch script

als in:

elk uur (of wat jij wilt) laat jij de taakplanner een script starten:

Batchfile:
1
2
3
xcopy c:\lokatievanopname\*.*  d:\nieuwelocatie

del c:\lokatievanopname\* /y

spoiler:
niet blind copy pasten natuurlijk kindertjes


en dan een ander taakplanner laten kijken of je d: schijf niet vol is - als dat zo is - dan je originele taak stoppen en gebruiker verwittigen?


ik zou wel willen testen of dit werkt, maar ik heb alleen nog maar vista machines; Vista heeft een superdeluxerere taakplanner

[ Voor 95% gewijzigd door sjongenelen op 02-04-2008 21:08 ]

you had me at EHLO


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

alt-92

ye olde farte

darkliquid schreef op dinsdag 01 april 2008 @ 23:45:
Bedankt voor deze oplossing. Ik begrijp echter niet helemaal hoe ik dit toe kan passen. Heb vrij weinig verstand van dit soort dingen (doe het vaak met .bat filetjes).
Copy-paste in notepad en opslaan als kopiedinges.vbs.
Hoe heet het precies (dan kan ik erop googlen) of heb je (een site met) uitleg voor me?
Dat noemen ze VBscript (zie ook de 'Visual Basic').

http://www.microsoft.com/technet/scriptcenter/default.mspx is dan wel een goed startpunt.
TheNymf schreef op dinsdag 01 april 2008 @ 23:50:
en dan een ander taakplanner laten kijken of je d: schijf niet vol is - als dat zo is - dan je originele taak stoppen en gebruiker verwittigen?

ik zou wel willen testen of dit werkt, maar ik heb alleen nog maar vista machines; Vista heeft een superdeluxerere taakplanner
Dergelijke checks doe je liefst vóór je je move actie doet :)
Scheelt weer - bovendien kun je met Powershell/VBscript ook heel goed logfiles aan laten leggen zodat je ook weet wat er fout is gegaan.


Oh, had ik al gezegd dat scripting cool is?
Nee?
Bij deze dan :P

[ Voor 35% gewijzigd door alt-92 op 01-04-2008 23:57 ]

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


  • sjongenelen
  • Registratie: Oktober 2004
  • Laatst online: 19-02 21:56
alt-92 schreef op dinsdag 01 april 2008 @ 23:54:
[...]

Copy-paste in notepad en opslaan als kopiedinges.vbs.

[...]

Dat noemen ze VBscript (zie ook de 'Visual Basic').

http://www.microsoft.com/technet/scriptcenter/default.mspx is dan wel een goed startpunt.
je moet er ook nog even inbouwen dat de vrije ruimte gechecked wordt in VB :)

you had me at EHLO


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

alt-92

ye olde farte

dat lijkt me nou een leuke oefening voor de TS :)

Controleer de grootte van te kopieren files, als er genoeg ruimte is dan kopieren, en anders afbreken met een melding in een logfile dat de files niet verplaatst zijn wegens te weinig ruimte.
Kan je zelfs mailen als je dat zou willen :)


[edit]
Om dan toch maar een voorbeeldje te geven:
Dit is een deel van een script wat ik eerder heb gebruikt om DVR-MS opnames van MCE over te halen naar een andere PC, daar te transcoden naar Xvid AVI en vervolgens terug te zetten op een 500GB storage schijf op die MCE.


Visual Basic:
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
Const OverwriteExisting = TRUE
Const ForAppending = 8
Dim objShell
Dim objFSO
strProg = "%comspec% /c " &  Chr(34) & "C:\Users\Public\Desktop\crunchie.lnk" & Chr(34)
strComputer = "."
strDate = FormatDateTime(Now(), 2)

'==========================================================================================
On Error Resume Next
'==========================================================================================

Set objWMIService = GetObject _
    ("winmgmts:\\" & strComputer & "\root\cimv2")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile _
    ("c:\scripts\status_" & strDate &".txt", ForAppending, True)

objFSO.MoveFile "\\shuttle\recorded TV\NCIS*.dvr-ms" , "E:\media\DVRMS\" ', OverwriteExisting
objFSO.MoveFile "\\shuttle\recorded TV\mcl*.dvr-ms" , "E:\media\DVRMS\" ', OverwriteExisting

'==========================================================================================
Function CheckProcess
set objShell = CreateObject("wscript.Shell")
objShell.Run (strProg),1,True

Do While TRUE
    Set colProcesses = objWMIService.ExecQuery _
        ("Select * from Win32_Process Where Name = 'crunchie.exe'")
    If colProcesses.Count = 0 Then
       Exit Function
    End If
    Wscript.Sleep 500000
Loop
End Function

'==========================================================================================

Function Rename
Set colFiles = objWMIService.ExecQuery _
    ("ASSOCIATORS OF {Win32_Directory.Name='E:\media\convertedTV'} Where " _
        & "ResultClass = CIM_DataFile")

For Each objFile In colFiles
If objFile.Extension = "avi" Then
    intLength = Len(objFile.FileName)
    intNewLength = intlength - 9
    strNewFileName = Left(objFile.FileName,intnewlength)
    strFileYear = Right(strNewFileName,4)
    strFileDate = Left(Right(strNewFileName,10),2)
    strFileMonth = Right(Left(Right(strNewFileName,10),5),2)
    intLength = Len(strNewFileName)
    intNewLength = intlength - 10
    strNewFileName = Left(strNewFileName,intnewlength)
    strNewName = objFile.Drive & objFile.Path & strNewFileName & strFileYear & strFileMonth & strFileDate & ".avi" 
End if
objTextFile.WriteLine(strNewFileName & strFileYear & strFileMonth & strFileDate & ".avi")    
errResult = objFile.Rename(strNewName)
Next
PushBack
End Function

'==========================================================================================

Function PushBack
  Set objFSO = CreateObject("Scripting.FileSystemObject")  
  
  objFSO.MoveFile "e:\media\convertedTV\mcl*.avi","\\SHUTTLE\Converted TV\McLeods\"
  objFSO.MoveFile "e:\media\convertedTV\NCIS*.avi","\\SHUTTLE\Converted TV\NCIS\"
End Function

'==========================================================================================

objTextFile.Close

[ Voor 84% gewijzigd door alt-92 op 02-04-2008 00:11 ]

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


  • Valigarmanda
  • Registratie: Mei 2003
  • Laatst online: 23-01 09:56
Bedankt voor alle reacties, zo gaat het zeker lukken!

Ik vroeg me echter nog iets af. Activewebcam delete automatisch de oudste bestanden als er niet genoeg ruimte is. Dit betekent dat als ik automatisch de files naar een andere schijf verplaats, deze oude beelden niet automatisch verwijderd worden bij ruimtetekort (resultaat kan zijn "oude beelden op C: - GAT - nieuwe beelden op D:). Ik zat te denken om bijv. anderhalve week (van 1,5 week tot nu - tijdlijn) op te nemen op D: (lege schijf) en deze automatisch te laten verplaatsen naar c:. Vervolgens verplaatst een script alle files in C: ouder dan 1,5 week terug naar D:. Activewebcam verwijderd op zijn beurt dan deze oudste bestanden om plaats te maken voor de nieuwe.

Met andere woorden alles word opgenomen op D:. Beelden gaan 1x per dag van D: naar C:. Beelden ouder dan 1,5 week gaan weer terug naar D:. Deze oude beelden worden dan verwijderd bij ruimtegebrek.

Misschien een beetje omslachtig maar op deze manier kan ik voor zover ik begrijp beide schijven gebruiken én de oudste beelden automatisch door het programma laten verwijderen om plaats te maken.

Kunnen jullie mij vertellen of ik dit goed begrepen heb (scripts kunnen toch onderscheid maken in recentheid van bestanden?) en kan ik deze twee scripts langs elkaar af laten lopen zonder problemen? (of kan het wellicht gewoon in één en hetzelfde script komen?)

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

TheNymf schreef op dinsdag 01 april 2008 @ 23:50:
Batchfile:
1
2
xcopy c:\lokatievanopname\*.*  d:\nieuwelocatie
del c:\lokatievanopname\* /y
FWIW: deze overnemen lijkt me erg onverstandig. Op deze manier kunnen er namelijk nieuwe bestanden bijkomen tussen de move en de delete: en raak je dus bestanden kwijt.

Niet bedoeld als kritiek op het meedenken trouwens :*
darkliquid schreef op woensdag 02 april 2008 @ 14:01:
Kunnen jullie mij vertellen of ik dit goed begrepen heb (scripts kunnen toch onderscheid maken in recentheid van bestanden?) en kan ik deze twee scripts langs elkaar af laten lopen zonder problemen? (of kan het wellicht gewoon in één en hetzelfde script komen?)
IMHO veel te omslachtig, verwijder ze dan gewoon indien nodig zelf met een scriptje :)
Twee scripts naast elkaar kan prima, in theorie kan het voorkomen dat je een bestand tegelijkertijd probeert te kopieren/verplaatsten en wegens ouderdom verwijderen. Maar dan mislukt verwijderen simpelweg en gebeurt het de volgende keer.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • Valigarmanda
  • Registratie: Mei 2003
  • Laatst online: 23-01 09:56
F_J_K schreef op woensdag 02 april 2008 @ 14:10:
[...]

IMHO veel te omslachtig, verwijder ze dan gewoon indien nodig zelf met een scriptje :)
Twee scripts naast elkaar kan prima, in theorie kan het voorkomen dat je een bestand tegelijkertijd probeert te kopieren/verplaatsten en wegens ouderdom verwijderen. Maar dan mislukt verwijderen simpelweg en gebeurt het de volgende keer.
In principe kan ik dus beter D: als opneemschijf instellen en een scriptje wat automatisch het oudste bestand in C: verwijderd en het oudste bestand van D: naar C: verplaatst?

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Bijvoorbeeld. Of als je het echt mooi wilt maken 2 los van elkaar werkende scripts die bijv. elke nacht om 2 uur resp. elke middag om 14u draaien: verplaats van X naar Y als X meer dan anderhalf keer zoveel vrije ruimte heeft als Y; verwijder de laatste N weken van Y als Y minder dan M ruimte heeft (en gaat schreeuwen als er zelfs na opschonen nog weinig ruimte is).

Letters X en Y en getallen M en N naar wens invullen :P

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 20:55

Hero of Time

Moderator LNX

There is only one Legend

Ik zou zelf de bestanden op de C: opslaan, deze verplaatsen naar D: en als de bestanden op D: anderhalve week oud zijn, verwijderen. Veel handiger, scheelt weer over en weer slepen van bestanden. Eerste script smijt gewoon domweg bestanden naar een andere schijf, tweede script kijkt hoe oud de bestanden zijn en indien ouder dan aangegeven worden ze verwijdert. Klaar. Niet moeilijker doen dan nodig is.

Commandline FTW | Tweakt met mate


  • Valigarmanda
  • Registratie: Mei 2003
  • Laatst online: 23-01 09:56
Hero Of Time schreef op woensdag 02 april 2008 @ 14:44:
Eerste script smijt gewoon domweg bestanden naar een andere schijf, tweede script kijkt hoe oud de bestanden zijn en indien ouder dan aangegeven worden ze verwijdert. Klaar. Niet moeilijker doen dan nodig is.
Dit werkt ook niet helemaal omdat de D: dan onbenut blijft toch?. I.p.v. domweg bestanden verplaatsen moeten dus alleen bestanden ouder dan bijv. 12 dagen gepakt worden. Op de nieuwe locatie worden ze dan na 12 dagen verwijderd.


edit: ik kom dan op het volgende scriptje uit, zou dit werken?
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.MoveFile "D:\Video\*.avi" , "C:\Video\"
OlderThanDate = DateAdd("d", -12, Date)
Dim Fso
Dim Directory
Dim Modified
Dim Files
Set Fso = CreateObject(”Scripting.FileSystemObject”)
Set Directory = Fso.GetFolder(”C:\Video”)
Set Files = Directory.Files
For Each Modified in Files
If DateDiff(”D”, Modified.DateLastModified, Now) > 12 Then Modified.Delete
Next


Ik twijfel met name over het eerste stukje, dus bestanden ouder dan 12 dagen verplaatsen naar c:\video... Klopt dit?

[ Voor 37% gewijzigd door Valigarmanda op 02-04-2008 15:42 ]


  • sjongenelen
  • Registratie: Oktober 2004
  • Laatst online: 19-02 21:56
F_J_K schreef op woensdag 02 april 2008 @ 14:10:
[...]

FWIW: deze overnemen lijkt me erg onverstandig. Op deze manier kunnen er namelijk nieuwe bestanden bijkomen tussen de move en de delete: en raak je dus bestanden kwijt.

Niet bedoeld als kritiek op het meedenken trouwens :*


[...]
het was maar een voorbeeld }:|

*O*

you had me at EHLO


  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 20:55

Hero of Time

Moderator LNX

There is only one Legend

darkliquid schreef op woensdag 02 april 2008 @ 15:34:
[...]


Dit werkt ook niet helemaal omdat de D: dan onbenut blijft toch?. I.p.v. domweg bestanden verplaatsen moeten dus alleen bestanden ouder dan bijv. 12 dagen gepakt worden. Op de nieuwe locatie worden ze dan na 12 dagen verwijderd.


edit: ik kom dan op het volgende scriptje uit, zou dit werken?
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.MoveFile "D:\Video\*.avi" , "C:\Video\"
OlderThanDate = DateAdd("d", -12, Date)
Dim Fso
Dim Directory
Dim Modified
Dim Files
Set Fso = CreateObject(”Scripting.FileSystemObject”)
Set Directory = Fso.GetFolder(”C:\Video”)
Set Files = Directory.Files
For Each Modified in Files
If DateDiff(”D”, Modified.DateLastModified, Now) > 12 Then Modified.Delete
Next


Ik twijfel met name over het eerste stukje, dus bestanden ouder dan 12 dagen verplaatsen naar c:\video... Klopt dit?
Beide schijven worden in mijn idee benut. Eerste instantie wordt alles opgeslagen op de C: schijf. Deze bestanden worden dan dmv een script op de D: gezet. Als de bestanden op D: anderhalve week oud zijn, worden ze pas verwijderd. Dat jij standaard op D: opslaat, kan ook, dan wissel je de letters om.

Commandline FTW | Tweakt met mate


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

alt-92

ye olde farte

Ietwat gemodificeerde versie :) garantie tot aan de deur enzo.

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Option Explicit
'==================================================
'Hiermee wordt zeer strikt naar je code gekeken - genereert fouten als er iets
'niet goed of helemaal niet gedeclareerd is, wat hier duidelijk het geval is
' (je declareert een Modified, maar maakt die nergens aan?)
'==================================================
Dim objFSO
Dim Directory
Dim Modified
Dim Files
'===================================
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.MoveFile "D:\Video\*.avi" , "C:\Video\"
OlderThanDate = DateAdd("d", -12, Date)

'=======================================
'Hergebruik je al aangemaakte FSO - lijkt me makkelijker
'=======================================

Set Directory = objFso.GetFolder("C:\Video")
Set Files = Directory.Files
For Each Modified in Files
If DateDiff("d", Modified.DateLastModified, Now) > 12 Then Modified.Delete
Next

[ Voor 4% gewijzigd door alt-92 op 02-04-2008 16:50 ]

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


  • Valigarmanda
  • Registratie: Mei 2003
  • Laatst online: 23-01 09:56
alt-92 schreef op woensdag 02 april 2008 @ 16:47:
Ietwat gemodificeerde versie :) garantie tot aan de deur enzo.
Hey, geweldig zeg! Ik heb het nergens expliciet gelezen maar regels met een ' aan het begin worden niet meegenomen toch?
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
Dim objFSO
Dim Directory
Dim Modified
Dim Files
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.MoveFile "D:\Video\*.*" , "C:\Video\"
OlderThanDate = DateAdd("d", -12, Date)
Set Directory = objFso.GetFolder("C:\Video")
Set Files = Directory.Files
For Each Modified in Files
If DateDiff("d", Modified.DateLastModified, Now) > 24 Then Modified.Delete
Next


Deze heb ik geprobeerd. Hij verplaatst echter de complete map, dus ook bestanden jonger dan 12 dagen. Doe ik iets fout? Het onderscheid wordt wel goed gemaakt in het 2e gedeelte, daar worden alleen de bestanden van 24 dagen en ouder verwijderd.

[ Voor 21% gewijzigd door Valigarmanda op 02-04-2008 18:30 ]


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

alt-92

ye olde farte

darkliquid schreef op woensdag 02 april 2008 @ 17:50:
[...]


Hey, geweldig zeg! Ik heb het nergens expliciet gelezen maar regels met een ' aan het begin worden niet meegenomen toch?
Klopt, da's commentaar.
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
Dim objFSO
Dim Directory
Dim Modified
Dim Files
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.MoveFile "D:\Video\*.*" , "C:\Video\"
OlderThanDate = DateAdd("d", -12, Date)
Set Directory = objFso.GetFolder("C:\Video")
Set Files = Directory.Files
For Each Modified in Files
If DateDiff("d", Modified.DateLastModified, Now) > 24 Then Modified.Delete
Next


Deze heb ik geprobeerd. Hij verplaatst echter de complete map, dus ook bestanden jonger dan 12 dagen. Doe ik iets fout?
Lees je script door van boven naar beneden en maak er eens een stroomdiagram van?

Dan komt vanzelf naar voren waarom dat gebeurt (hint: wanneer voer je welke actie uit).

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


  • Valigarmanda
  • Registratie: Mei 2003
  • Laatst online: 23-01 09:56
alt-92 schreef op woensdag 02 april 2008 @ 18:51:
Lees je script door van boven naar beneden en maak er eens een stroomdiagram van?

Dan komt vanzelf naar voren waarom dat gebeurt (hint: wanneer voer je welke actie uit).
Ik denk dat ik mijn fout gevonden heb, lijkt me logisch om eerst aan te geven WAT er verplaatst moet worden voordat het verplaatst wordt }:O

Jammer genoeg ben ik echt een leek op dit gebied maar ik heb er het volgende uit weten te gooien:


Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Dim objFSO
Dim Directory
Dim Modified
Dim Files
Set objFSO = CreateObject("Scripting.FileSystemObject")  
Set objFolder = objFSO.GetFolder("D:\Video")  
For Each objFile In objFolder.Files  
If objFile.DateLastModified < DateAdd("d", -12, Now) Then
 objFSO.MoveFile "D:\Video\*.*" , "C:\Video\"
End If  
Next
Set Directory = objFso.GetFolder("C:\Video")
Set Files = Directory.Files
For Each Modified in Files
If DateDiff("d", Modified.DateLastModified, Now) > 24 Then Modified.Delete
Next


Er gebeurt echter precies hetzelfde als in het andere script (alles wordt verplaatst). Ik ging er van uit als ik de tijd eerst zou noemen en dan de actie dat er wel een onderscheid gemaakt zou worden (op dezelfde manier als de bestanden ouder dan 24 dagen verwijderd worden). Ik ben echt vrij zeker dat de fout (ofja hij geeft geen fout, maar doet het wel fout) hem zit in een spatie, haakje of comma. Zit ik zo in de goede richting of heb ik iets groters fout gedaan?

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

alt-92

ye olde farte

Je zit aardig in de goede richtig hoor.
Wat je kan doen is bijvoorbeeld eerst een
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
Set objFolder = objFSO.GetFolder("D:\Video")  
For Each objFile In objFolder.Files  
If objFile.DateLastModified < DateAdd("d", -12, Now) Then

'nou niet gelijk moven maar eerst eens een popup geven om te zien
'of je wel de juiste files krijgt

MsgBox objFile.Name

 'objFSO.MoveFile "D:\Video\*.*" , "C:\Video\"
End If  
Next 

[ Voor 6% gewijzigd door alt-92 op 02-04-2008 20:18 ]

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


  • Valigarmanda
  • Registratie: Mei 2003
  • Laatst online: 23-01 09:56
Ik geloof dat het gelukt is! Bedankt voor de tip van de popup, maar het is niet de bedoeling dat er eerst op OK gedrukt moet worden voordat er iets gaat gebeuren. Ik heb nu het volgende script wat lijkt te werken:

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Const FOLDER = "D:\Video"
Const BACKUP_FOLDER = "C:\Video"
Dim objFSO, objFolder, objFile
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder("D:\Video\")
For Each objFile In objFolder.Files
If objFile.DateLastModified < DateAdd("d", -12, Now) Then
objFile.Move BACKUP_FOLDER & "\" & objFile.Name
End If
Next
Set Directory = objFso.GetFolder("C:\Video")
Set Files = Directory.Files
For Each Modified in Files
If DateDiff("d", Modified.DateLastModified, Now) > 24 Then Modified.Delete
Next


Nu vraag ik me alleen af wat er gebeurt als er een foutmelding komt (bestand bestaat al / bestaat niet e.d.). Dan komt er een popup om op OK te klikken. Is er een manier om deze popup te onderdrukken? De pc werkt grotendeels onbeheerd dus als er iets foutgaat in het script kan het even duren voordat iemand op OK kan klikken. Kan het script opnieuw uitgevoerd worden terwijl een oude foutmelding openstaat? (met de mogelijkheid dat met het automatisch opnemen de 2e keer wel de benodigde bestanden bestaan en de boel dus wel zal werken)

[ Voor 25% gewijzigd door Valigarmanda op 02-04-2008 20:59 ]


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

alt-92

ye olde farte

darkliquid schreef op woensdag 02 april 2008 @ 20:55:
Ik geloof dat het gelukt is! Bedankt voor de tip van de popup, maar het is niet de bedoeling dat er eerst op OK gedrukt moet worden voordat er iets gaat gebeuren.
Da's ook alleen maar voor je debugging hoor :)
Nu vraag ik me alleen af wat er gebeurt als er een foutmelding komt (bestand bestaat al / bestaat niet e.d.).
Beantwoord je vraag in dat script? :)
oftewel: error afhandeling - wat moet er gebeuren als er iets anders dan standaard aangetroffen wordt.

Dat kan je weer met een
If [...] then
Else if [...] then
End if
Achtige structuur oppakken.

Maar wellicht is het dan handiger om eventjes de scripting documentatie op bijvoorbeeld Technet (of een VBscriptingprimer van O'reilly's) erbij te pakken :)

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


  • Valigarmanda
  • Registratie: Mei 2003
  • Laatst online: 23-01 09:56
Ok, in ieder geval heb ik hier een ijzersterk begin. Misschien niet de meest ideale oplossing, maar het werkt :)

Harstikke bedankt voor alle hulp!
Pagina: 1