[vb6] Complete Map kopieren

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

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 17-10 16:43
(Jaa daar is ie weer, onze VB6 stoeierd! Geen zorgen over een paar weken ga ik over op C#,en dan
hebben jullie een stuk minder last van me)

Ik ben flink aan het googelen geweest naar een in mijn ogen ontzettend simpel stukje code.

Wat ik wil: Elke dag een backup van een map maken, maar niet de map overschrijven, maar gewoon voor elke dag van de week een eigen map

Stukje code wat ik in gedachten had
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
Option Explicit
Dim iTijd as integer 'integer die opgehoogt wordt door de Timer

Private Sub Form_Load()
iTijd = 0
End sub

Private Sub Timer1_Timer()
'timer die elke minuut tikt (tick=60000)
iTijd = iTijd + 1
if iTijd >= 60*24 then
  Maak_Backup
  iTijd = 0
End if
End Sub

Private Sub Maak_Backup()
Dim sDag as string
Dim sSource as string
Dim sDest as string
sdag = format(now, "DDDD") 'retourneerd op vrijdag "vrijdag"
'en dan nu de code waar het om gaat:
sSource = "C:\MapDieGebackUpedMoetWorden\"
sDest = "D:\Backups\" & sdag & "\"
kill sdest
filecopy(ssource,sdest)

'Helaas werkt dit niet, omdat filecopy geen hele directories stuurt
End sub

Dit leek me een leuk stukje code, maar filecopy werkt niet op directories, ik heb gegoogled naar stukjes code, maar dan werd telkens door de folders geitereerd, dit leek me nogal omslachtig, ik vroeg me af of je niet gewoon een windows API call zou kunnen maken om de map te kopieren? Of dat er een simpel stukje code is.

Als het echt echt echt nodig is maak ik wel een module, maar zo'n itererend stukje code heeft in mijn ogen het probleem dat het langzaam is (niet echt een punt hier aangezien de computer cpu cycles te over heeft en er een dag over mag doen) en je problemen krijgt met hele diepe mappen. Ook zie je in zo'n itererend stukje misschien snel bestanden over het hoofd.

[ Voor 4% gewijzigd door roy-t op 15-06-2007 11:28 ]

~ Mijn prog blog!


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Waarom zou je in een itererent stukje iets over het hoofd zien ?

Nouja, ik zou kiezen voor een recursieve method, die alles die in een bepaalde directory staat enumereert, is het een file -> copy; is het een directory, creeër destination directory, en roep de method opnieuw aan voor die directory.
Niet moeilijk, je kan gewoon niets over het hoofd zien, en al bij al zal de snelheid nog wel meevallen denk ik.

Aan de andere kant, wat is er mis met gewoon een batch bestandje dat je mbhv Windows Scheduler laat uitvoeren, en dat een xcopy doet.

https://fgheysels.github.io/


  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 17-10 16:43
whoami schreef op vrijdag 15 juni 2007 @ 10:47:
Waarom zou je in een itererent stukje iets over het hoofd zien ?

Nouja, ik zou kiezen voor een recursieve method, die alles die in een bepaalde directory staat enumereert, is het een file -> copy; is het een directory, creeër destination directory, en roep de method opnieuw aan voor die directory.
Niet moeilijk, je kan gewoon niets over het hoofd zien, en al bij al zal de snelheid nog wel meevallen denk ik.

Aan de andere kant, wat is er mis met gewoon een batch bestandje dat je mbhv Windows Scheduler laat uitvoeren, en dat een xcopy doet.
Hmm, eigenlijk nog helemaal niet nagedacht over een simpel batchje, zou perfect zijn voor dit, ik herinner me nog iets over robocopy, en xcopy, is even google-en! :*)

~ Mijn prog blog!


  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 01-12 14:29

sopsop

[v] [;,,;] [v]

The magische woorden voor filehandling in VB6 zijn "File System Object" of kortweg FSO.
Google: VB FSO copy folder

Bijvoorbeeld: http://www.georgehernandez.com/h/xComputers/VB/zMisc/FSO.htm

[ Voor 7% gewijzigd door sopsop op 15-06-2007 10:55 ]


  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 17-10 16:43
sopsop schreef op vrijdag 15 juni 2007 @ 10:54:
The magische woorden voor filehandling in VB6 zijn "File System Object" of kortweg FSO.
Google: VB FSO copy folder

Bijvoorbeeld: http://www.georgehernandez.com/h/xComputers/VB/zMisc/FSO.htm
Ik hou van je! O+

Heb nog nooit met het filesystemobject gewerkt, maar dit werkte perfecto! En simpele code, wat vreemd dat ik dit uberhaupt niet ben tegengekomen in mijn zoektocht.

Voor de compleetheid gefixde code wordt nu zo (nog even kijken of dit compiled):
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub Maak_Backup()
Dim sDag as string
Dim sSource as string
Dim sDest as string
sdag = format(now, "DDDD") 'retourneerd op vrijdag "vrijdag"
'en dan nu de code waar het om gaat:
sSource = "C:\MapDieGebackUpedMoetWorden" 'let op NIET eindigen met een "\"
sDest = "D:\Backups\" & sdag
Set fso = CreateObject("scripting.filesystemobject")
fso.copyfolder sSource, sDest

End sub


Note: een kill is niet meer nodig FSO schrijft gewoon netjes over :)

Edit: foutje gefixed:
sdag = format(now, "d") 'retourneerd op vrijdag "vrijdag" moet zijn Format(now, "DDDD")

[ Voor 42% gewijzigd door roy-t op 15-06-2007 11:28 ]

~ Mijn prog blog!


  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 01-12 14:29

sopsop

[v] [;,,;] [v]

Lees je maar eens in op het FSO. Het is echt enorm krachtig. Zodra er iets van Filehandling in je project voor komt kun je hier gebruik van maken. Renamen, copieren, verwijderen, folderinhoud bekijken (al dan niet middels een geneste functie), bestanden bewerken, you name it. En er is/zijn genoeg documentatie/codevoorbeelden voor te vinden.

En je kunt het ook buiten VB6 gebruiken (ik noem office macro's, asp, etc.).

  • Kuhlie
  • Registratie: December 2002
  • Niet online
therat10430 schreef op vrijdag 15 juni 2007 @ 11:21:
Note: een kill is niet meer nodig FSO schrijft gewoon netjes over :)
Eeh, FSO laat wel oude bestanden staan, ook als deze in de sourcefolder niet meer bestaan. Je backup wordt dus alleen groter, de bestanden die je afgelopen week hebt verwijderd blijven in de backup bestaan. Een kill is misschien dus toch nog nuttig.

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 17-10 16:43
Kuhlie schreef op vrijdag 15 juni 2007 @ 11:35:
[...]

Eeh, FSO laat wel oude bestanden staan, ook als deze in de sourcefolder niet meer bestaan. Je backup wordt dus alleen groter, de bestanden die je afgelopen week hebt verwijderd blijven in de backup bestaan. Een kill is misschien dus toch nog nuttig.
Klopt, maar dat is voor mijn programma geen probleem het is een vaste set van bestanden die toenemen in grote :)

~ Mijn prog blog!


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 30-11 00:17
Is dit om te oefenen of probeer je xcopy te maken?

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 17-10 16:43
Nee hoor, ik wilde gewoon even snel een klein backup programmatje maken, dat wat belangrijke bestanden van een zelfgemaakt programma dat ik veel gebruik automatisch kopieert. Leek me simpel om dat snel in VB te doen (na sopsops tip had ik nog geen 5min nodig om het inelkaar te draaien, sneller dan xcopy of robocopy onder de knie te krijgen)

Ook kon ik via VB ervoor zorgen dat de applicatie niet perongeluk gesloten wordt, en tsja vond ik dat ik meer controle had. Vandaar uiteindelijk gewoon VB.

~ Mijn prog blog!

Pagina: 1