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, 4853 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
Ähnliche Inhalte
Batch & Shell
gelöst PC nach einem Kopiervorgang herunterfahren - PowerShell Script? (4)

Frage von Stefan007 zum Thema Batch & Shell ...

Ubuntu
Nregp ereignis für bash-script (1)

Frage von rsadmchef zum Thema Ubuntu ...

MikroTik RouterOS
gelöst Script - exportieren Hotspot user (4)

Frage von sebasscha zum Thema MikroTik RouterOS ...

Heiß diskutierte Inhalte
Google Android
gelöst Android-Handy versehentlich (dauerhaft) gesperrt? (22)

Frage von FA-jka zum Thema Google Android ...

DSL, VDSL
gelöst DSL 200m verlängern (13)

Frage von Angela44 zum Thema DSL, VDSL ...

Batch & Shell
gelöst Ordner und Datei Name gleich (BATCH) (12)

Frage von clragon zum Thema Batch & Shell ...

Windows Server
SBS 2011 Standard virtualisieren (11)

Frage von HeinrichM zum Thema Windows Server ...