![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Inventar
![]() Registriert seit: 12.10.2000
Ort: Wien
Alter: 77
Beiträge: 1.963
|
![]() Hallo VB-Spazialisten,
wer kann mir helfen? ich möchte gerne mittels VB-Programm ganze ordner(inhalte) zum zwecke der datensicherung kopieren. ich kann zwar files (filecopy) aber keine ordner kopieren. kann mir jemand die syntax verraten?
____________________________________
Schöne Grüße nordb@hnfredi |
![]() |
![]() |
![]() |
#2 |
Schwarzfußfrettchen
![]() Registriert seit: 28.01.2001
Beiträge: 2.071
|
![]() ganze ordner auf einmal geht nicht.
ausser du nimmst dir ein dirinfo und ein fileinfo element und gehst diese rekursiv durch. dann musst aber auch entsprechend verzeichnisse auf dem backup medium anlegen (error-trapping nicht vergessen a la 'on error resume next') weil sonst bekommst immer a fehlermeldung wenn a verzeichnis oder datei schon existiert. praktischerweise gehst die beiden boxen ned nur rekursiv sondern auch in einer schleife durch womit du dann automatisch ein backup eines ordners und seiner unterordner anlegen kannst. ![]()
____________________________________
Wann die kan Almdudler ham... \"Es gibt nur einen Weg zur Lunge, und der muss geteert werden, damit der Krebs nicht stolpert!\" http://www.dream.at/gizmo/bunny.gif Image is © 2001 Merle Sterndalsäg.. ähh... jäger ![]() |
![]() |
![]() |
![]() |
#3 | |
Inventar
![]() Registriert seit: 12.10.2000
Ort: Wien
Alter: 77
Beiträge: 1.963
|
![]() Zitat:
____________________________________
Schöne Grüße nordb@hnfredi |
|
![]() |
![]() |
![]() |
#4 |
Master
![]() |
![]() Halt!!
![]() Ich hoffe du hast dir noch nicht die Arbeit angetan und hast dir eine eigene Routine zum kopieren geschrieben! Es gibt zwar keine Funktion in VB mit der man Ordner Kopieren kann aber einen API Call. Der ist recht simpel zu benutzen : Code:
Option Explicit Private Declare Function SHFileOperation Lib "shell32.dll" (lpFileOp As SHFILEOPSTRUCT) As Long Private Type SHFILEOPSTRUCT hwnd As Long wFunc As Long pFrom As String pTo As String fFlags As Integer fAnyOperationsAborted As Long hNameMappings As Long lpszProgressTitle As String ' only used if FOF_SIMPLEPROGRESS End Type Private Const FO_COPY = &H2 Private Const FO_MOVE = &H1 Private Const FOF_NOCONFIRMATION = &H10 Private Const FOF_SILENT = &H4 Private Sub CMD_Durchfueren_Click() Dim FileOP As SHFILEOPSTRUCT Dim lResult As Long If EDT_Von = "" Or EDT_Nach = "" Then MsgBox "Sie müssen eine quelle und ein Ziel angeben!", vbOKOnly + vbCritical, "Fehler" Exit Sub End If With FileOP .pFrom = EDT_Von 'Text von einer Editbox was kopiert wird (opt. mit wildkats) .pTo = EDT_Nach 'Text von einer Editbox wohin wird kopiert. .wFunc = FO_COPY '.wFunc = FO_MOVE 'Anstatt obriger Zeile um zu verschieben und nicht zu kopieren '.wFunc = FOF_SILENT 'Zeigt keine Dialogbox an '.wFunc = FOF_NOCONFIRMATION 'Vorhandene Dateien werden ohne Nachfrage überschrieben usw.. End With lResult = SHFileOperation(FileOP) If Not lResult = 0 Then MsgBox "Es ist ein Fehler aufgetreten", vbOKOnly + vbCritical, "FEHLER" End If End Sub Für wFunc gibt es noch einige andere nützliche Optienen die ich die im Beispielprog auch mit einer (englischen) Bemerkung dazugeschrieben habe.
____________________________________
__________________ |»»»»»SONIC««««««| ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ |
![]() |
![]() |
![]() |
#5 |
Inventar
![]() Registriert seit: 12.10.2000
Ort: Wien
Alter: 77
Beiträge: 1.963
|
![]() hallo sonic,
zuerst einmal danke für die infos. in welcher VB vers. ist der code? lieber würde ich mir ein sicherungsprogramm selber schreiben. aber mein problem ist folgendes´, ich hab zwar 2 VB5 bücher, aber immer das was ich suche ist nicht drin. z. b. wie ich in DIRINFO bzw. FILEINFO weiterdrehen kann, die Einträge abarbeiten kann, also file für file kopieren. aber vielleicht kann ich mir deinen code indivuduell gestalten, denn ich würde gerne abhängig vom wochentag in einen entsprch. ordner sichern, aber automatisch, das heißt ich starte mein sicherungsprogramm und alles läuft automat. ab. ich sichere eh immer die gleichen ordner(eigene dateien, outlook, favoriten, etc.)
____________________________________
Schöne Grüße nordb@hnfredi |
![]() |
![]() |
![]() |
#6 |
Schwarzfußfrettchen
![]() Registriert seit: 28.01.2001
Beiträge: 2.071
|
![]() dir/fileinfo boxen..
eigenschaft listcount: Anzahl einträge eigenschaft List(): die einzelnen Einträge for x=0 to file1.listcount-1 debug.print file1.list(x) next dir1/list1.path = pfad list1.pattern (oder ähnlich) = "*.*" hoffe das hilft ![]()
____________________________________
Wann die kan Almdudler ham... \"Es gibt nur einen Weg zur Lunge, und der muss geteert werden, damit der Krebs nicht stolpert!\" http://www.dream.at/gizmo/bunny.gif Image is © 2001 Merle Sterndalsäg.. ähh... jäger ![]() |
![]() |
![]() |
![]() |
#7 |
Inventar
![]() Registriert seit: 12.10.2000
Ort: Wien
Alter: 77
Beiträge: 1.963
|
![]() hallo Sesa_Mina,
das wird mir sicher weiterhelfen. Mir fehlt ein Buch mit vielen, praktikablen Beispielen. Kannst du mir was diesbezügliches empfehlen- Ich habe VB5 "Das Programmierbuch" Sybex-Verlag und VB5 "Das Kompendium" Narkt&Technik. Mit meinen PL1, Cobol u. Assembler-Kenntnissen vom Großrechner komme ich da nicht weiter, weil mir die Syntax von VB5 nicht geläufig ist. Aber wenn ich Beispiele hätte, das wär was anderes. Programmierst du professionel in VB?
____________________________________
Schöne Grüße nordb@hnfredi |
![]() |
![]() |
![]() |
#8 |
Master
![]() |
![]() HI!
Also der Code ist von mir in VB6 geschrieben worden. Sollte aber in VB5 genauso funktionieren. Wenn du ein Backup Programm schreiben willst, musst du meinen Beispielcode nur ein bisschen abwandeln. in .pFrom = schreibst du zb einfach "C:\Eigene Dateien" und in .pTo den Zielordner. Dann setzt du noch .wFunc = FOF_SILENT und .wFunc = FOF_NOCONFIRMATION damit alles automatisch im hintergrund abläuft. Ohne das irgendwelche Message oder Dialogboxen kommen. Solltest du das kopieren lieber selbst File für File machen wollen dann nimm aber bite nicht die dir/fileinfo boxen. Das sind User Interfaces und sollten nicht für eine Automatische verarbeitung herhalten müssen. Ich würde dir eher den Befehl Dir ans Herz legen. Der liefert die ein directory listing und zwar immer einen Eintrag pro Aufruf. Eine Kopier routine könnte so aussehen: Code:
Private Function xcopy() Dim sDirEintrag As String sDirEintrag = Dir("C:\Eigene Dateien\") While Not sDirEintrag = "" FileCopy "C:\Eigene Dateien\" & sDirEintrag, "D:\BackupDir\" & sDirEintrag sDirEintrag = Dir() Wend End Function Eine andere einfache Möglichkeit währe den Dosbefehl xcopy in einer (versteckten) Dosshell zu benutzen! Code:
Private Function xcopy() Dim sXcopyShell As String sXcopyShell = "xcopy " & Chr(34) & "C:\Eigene Dateien\*.*" & Chr(34) & " /E /I /H /Y d:\Backup\" Shell sXcopyShell, vbHide End Function http://www.vbworld.com/ http://www.programmersheaven.com/ http://www.vbcode.com/ http://www.freevbcode.com/ Ich hoffe das hilft dir etwas weiter. lg
____________________________________
__________________ |»»»»»SONIC««««««| ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ |
![]() |
![]() |
![]() |
#9 |
Schwarzfußfrettchen
![]() Registriert seit: 28.01.2001
Beiträge: 2.071
|
![]() Visual Basic 6
Das Buch von Evangelos Petroutsos Sybex Verlag ISBN: 3-8155-7018-2 Preis: damals hats noch 657.- kostet. ATS ![]() sehr zu empfehlen ![]()
____________________________________
Wann die kan Almdudler ham... \"Es gibt nur einen Weg zur Lunge, und der muss geteert werden, damit der Krebs nicht stolpert!\" http://www.dream.at/gizmo/bunny.gif Image is © 2001 Merle Sterndalsäg.. ähh... jäger ![]() |
![]() |
![]() |
![]() |
#10 |
Inventar
![]() Registriert seit: 12.10.2000
Ort: Wien
Alter: 77
Beiträge: 1.963
|
![]() vorerst vielen dank euch beiden,
werde mich in die materie vertiefen.
____________________________________
Schöne Grüße nordb@hnfredi |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|