Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Brauche spezielles Backup Script!

Frage Entwicklung VB for Applications

Mitglied: chrizz-at

chrizz-at (Level 1) - Jetzt verbinden

10.09.2008, aktualisiert 11.09.2008, 4851 Aufrufe, 5 Kommentare

Liebe Gemeinde, ich brauche unbedingt hilfe bei einem Kopier/Backupscript in der Sprache VBScript. Es soll einen Ordner, seine Unterordner und die darin liegenden Dateien (Also einen ganzen Verzeichnisbaum) von A nach B kopieren. (Das heisst die Ordner auch als Abbild vom Quellverzeichnisbaum ins Ziel erstellen)
Und dies einzeln und auf jeden fall Rekursiv! Da es eine ErrorMessage ausgeben soll falls eine Datei nicht kopiert werden konnte.
Es soll auch ausgeben welche Dateien und Ordner tatsächlich kopiert wurden.


Hier mein Anfang: (bei 'Files kopieren weis ich nicht mehr weiter!!)

01.
Option Explicit 
02.
' Aufruf der Routine 
03.
' Konstanten definieren 
04.
Const srcDir = "C:\Addon" 
05.
Const destDir = "D:\Temp" 
06.
 
07.
Dim log 
08.
Dim errorLog 
09.
log = "" 
10.
errorLog = "" 
11.
 
12.
ListeVerzeichnisseRek srcDir, destDir, 1 
13.
Wscript.echo log 
14.
Wscript.echo errorlog 
15.
 
16.
Private Sub AddLog(logLine) 
17.
	log = log + logLine+CHR(13) 
18.
End Sub 
19.
 
20.
Private Sub AddErrorlog(logLine) 
21.
	errorlog = errorlog + logLine+CHR(13) 
22.
End Sub 
23.
 
24.
private Sub ListeVerzeichnisseRek(srcDir, destDir, tiefe) 
25.
	On Error Resume Next 
26.
	' Deklaration der Variablen 
27.
	Dim FSO, Verzeichnis, UnterVerzeichnis 
28.
	' Objekt erzeugen 
29.
	Set FSO = CreateObject("Scripting.FileSystemObject") 
30.
	 
31.
	'  Wenn das Verzeichnis existiert 
32.
	If FSO.FolderExists(srcDir) and (tiefe < 4) then 
33.
		AddLog srcDir + " -> " + destDir 
34.
	End if 
35.
	 
36.
	' Referenz auf Verzeichnis 
37.
	Set Verzeichnis = FSO.GetFolder(srcDir) 
38.
	 
39.
	'Files kopieren 
40.
	 
41.
	 
42.
		if Err.Number <> 0 then 
43.
			addErrorLog("Es ist ein Fehleraufgetreten.") 
44.
			addErrorLog(vbTab & "Fehlernummer: " & Err.Number) 
45.
			addErrorLog(vbTab & "Beschreibung: " & Err.Description & vbCrLf) 
46.
			addErrorLog(Err.Description) 
47.
			Err.Clear 
48.
		End if 
49.
	Next 
50.
		'Alle Unterverzeichnisse auflisten 
51.
	For Each UnterVerzeichnis in Verzeichnis.Subfolders 
52.
			' Erneuter Aufruf mit dem Unterverzeichnis 
53.
			ListeVerzeichnisseRek UnterVerzeichnis, destDir & "\" & UnterVerzeichnis.Name, tiefe + 1 
54.
	Next 
55.
End Sub


Falls jemand sowas schon hat, wäre ich sehr dankbar wenn er das Script posten könnte. Bin noch ein Anfänger und es wird mir irgendwie schon zu schwierig!


Lg Chris
Mitglied: Iwan
10.09.2008 um 10:26 Uhr
hallo,

warum MUSS es unbedingt VBS sein? robocoy z.B. kopiert das ganze im Batchmodus und man kann sich ein schönes Log dazu erstellen lassen
Bitte warten ..
Mitglied: wakko
10.09.2008 um 13:35 Uhr
Moin,

hab da noch tief in meinen Programmen was gefunden:
01.
Function fct_ListAllFiels(strinPath As String) 
02.
Dim flag As Boolean, vadd() As String 
03.
strinPath = fct_BackSlash(strinPath) 
04.
'Gibt die Namen aller Dateien inklusive Pfad aus einem übergebenen Verzeichnisses sowie 
05.
' aus allen Unterverzeichnisse in einem String-Array zurück 
06.
Dim f, fs, fc, f1, fsub, strName As String, i As Integer, v() As String, j% 
07.
Set fs = CreateObject("Scripting.FileSystemObject") 
08.
If fs.FolderExists(strinPath) Then 
09.
   Set f = fs.GetFolder(strinPath) 
10.
   Set fc = f.Files 
11.
   i = 0 
12.
   flag = True 
13.
   For Each f1 In fc 
14.
        strName = f1.Name 
15.
        ReDim Preserve v(0 To i) 
16.
        v(i) = strinPath & "\" & strName 
17.
        i = i + 1 
18.
   Next 
19.
   If f.SubFolders.Count > 0 Then 
20.
      For Each fsub In f.SubFolders 
21.
          'rekursiver Aufruf für Unterordner 
22.
          vadd = fct_ListAllFiels(strinPath & "\" & fsub.Name) 
23.
          For j = 0 To UBound(vadd) 
24.
              ReDim Preserve v(0 To i) 
25.
              v(i) = strinPath & "\" & fsub.Name & "\" & vadd(j) 
26.
              i = i + 1 
27.
          Next 
28.
      Next 
29.
   End If 
30.
End If 
31.
fct_ListAllFiels = v 
32.
End Function
Gibt ein Array mit allen Dateien zurück. Ist eigentlich VB, müsste als VBScript jetzt auch laufen (habe da Kleinigkeiten angepasst).
Noch nicht wirklich getestet, also bitte vorsicht.
Du müsstest also nur noch durchs Array flitzen, als Ziel source mit dest vertauschen und fertig. Also quasi so oder ähnlich:
01.
sub copyfiles(source, dest) 
02.
dim v, i% 
03.
v = fct_ListAllFiles(souce) 
04.
for i = 0 to ubound(v) 
05.
    filecopy v(i) replace(v(i), source, dest) 
06.
Next 
07.
End sub
Hoffe, das hilft etwas.
Log's bekommst du schon hin ;)
Gruß,
Henrik
Bitte warten ..
Mitglied: chrizz-at
11.09.2008 um 09:16 Uhr
Warum es VBS sein muss? Weil das Script nur im Hintergrund laufen soll und kopieren, und soll auch logs ausgeben. (Ist für einen Kunden von uns)

Für Error und die Daten die tatsächlich kopiert wurden..

lg
Bitte warten ..
Mitglied: Iwan
11.09.2008 um 14:14 Uhr
wie gesagt, robocopy kann das alles, aber mit VBS? sorry
Bitte warten ..
Mitglied: chrizz-at
11.09.2008 um 14:47 Uhr
Habe es sogut wie fertig.. Es kopiert alle Dateien einzeln (rekursiv) und erstellt die Ordner für den Zielort! Wenn etwas nicht kopiert werden kann schreibt es eine Logfile und kopiert weiter..

Ich kann es morgen reinstellen wer es haben will!

lg chris
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
Backup Script Optimierung und MSSQL (4)

Frage von TommyB83 zum Thema Batch & Shell ...

Batch & Shell
gelöst PowerShell Script Move-Item nach x Tagen (5)

Frage von lupolo zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...

Windows Server
Suche passender Treiber (12)

Frage von stolli zum Thema Windows Server ...

Peripheriegeräte
Wlan stört Funkmaus (11)

Frage von Falaffel zum Thema Peripheriegeräte ...

Peripheriegeräte
gelöst USB Festplatte verliert Laufwerksbuchstabe (9)

Frage von cese4321 zum Thema Peripheriegeräte ...