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

Alte Dateien auf anderes Medium verschieben und einen Link erstellen

Frage Entwicklung VB for Applications

Mitglied: ceng.de

ceng.de (Level 1) - Jetzt verbinden

24.07.2010, aktualisiert 18.10.2012, 5814 Aufrufe, 15 Kommentare

Hallo Community,
ich nutze administrator.de seit langer Zeit für meine tägliche Arbeit und habe hier VIEL Hilfe gefunden.

Ich habe leider zuwenig Ahnung von VB als das ich sowas selbst schreiben könnte, deshalb hier meine Frage an Euch:

Seit einiger Zeit mache ich damit rum, alte Dateien von einem Medium auf ein anderes per VB oder Batch zu verschieben, die Struktur im "Archiv" zu belassen UND gleichzeitig einen Link im Quellverzeichnis zu hinterlassen.

Habt Ihr eine Idee?


Laufwerksquellen

Originaldaten:
p:\Daten

Archivierungsdaten:
q:\Daten
Vielen Dank für Eure Hilfe und Vorschläge
Mitglied: Friemler
24.07.2010 um 20:25 Uhr
Hallo ceng.de,

1. Betreffend des Erzeugens von Verknüpfungen: Suchfunktion des Forums nutzen

2. Wie definierst Du "alt"? Erstellungsdatum/Datum der letzten Änderung vor einem bestimmten Datum oder liegt eine bestimmte Zeitspanne zurück oder älter als eine andere Version der Datei an einem anderen Ort?

3. Auszug aus bestehendem Code.

4. Hoffe nicht auf eine Fertiglösung.

Gruß
Friemler
Bitte warten ..
Mitglied: ceng.de
24.07.2010 um 20:35 Uhr
Zitat von Friemler:
Hallo ceng.de,

1. Betreffend des Erzeugens von Verknüpfungen: Suchfunktion des Forums nutzen
- hast Du einen Link zu einem Eintrag? Ich habe bisher nichts gefunden.

2. Wie definierst Du "alt"? Erstellungsdatum/Datum der letzten Änderung vor einem bestimmten Datum oder liegt eine
bestimmte Zeitspanne zurück oder älter als eine andere Version der Datei an einem anderen Ort?
- die Datei delage32.exe ( F:\Sicherung\Logs\*.* 7 /recurse /created /rd) erfüllt schon seit erheblicher Zeit für mich den Zweck die "alten" Dateien zu löschen. Ich nutze sie in einem Batchfile.

3. Auszug aus bestehendem Code.
- ich habe nur die Batchdatei, die funktioniert eben mit delage. Jetzt soll aber die datei nicht gelöscht, sondern verschoben werden (geht auch mit delage32) aber ich hätte gerne einen Link auf die verschobene Datei im originalverzeichnis, da die Mitarbeiter die Dateien nicht suchen sollen, sondern direkt auf das andere Medium verbunden werden sollen.

4. Hoffe nicht auf eine Fertiglösung.

- Ein Ansatz in VB würde mir vll. helfen... Eine Fertiglösung wäre natürlich noch schöner , aber daran glaube ich auch nicht...

Gruß
Friemler


Vielleicht nochmal zum Konzept der Idee...

Ich würde gerne Dateien deren Änderungsdatum X-Tage zurückliegt per Batch / VB auf ein anderes Medium / Laufwerk verschieben und anstatt der Originaldatei einen Link erstellen.
Bitte warten ..
Mitglied: Friemler
24.07.2010, aktualisiert 18.10.2012
Hallo ceng.de,

wenn Du schon delage32 verwendest, dann bleib doch bei Batch. Leite die Ausgabe von delage32 in eine Datei um, die Du mit einer FOR /F Schleife auseinander dröselst. Im Forum finden sich wie gesagt VBS-Schnipsel, die eine Verküpfung anlegen. Den Schnipsel führst Du innerhalb der FOR /F Schleife aus. Andere Beispiele im Forum zeigen, wie man ein temporäres VBScript aus einer Batchdatei erzeugt und ausführt.

[Edit]
http://www.administrator.de/forum/batch-verkn%c3%bcpfung-erstellen-mit- ...
http://msdn.microsoft.com/en-us/library/xsy6k3ys%28VS.85%29.aspx

Gruß
Friemler
Bitte warten ..
Mitglied: ceng.de
24.07.2010 um 22:39 Uhr
Ja... Ja... Ja...

Delage /preview als Input für das VB-Script... könnte gehen...

makescut.exe könnte an der stelle evtl. auch helfen...

Ein ganz anderer Ansatz, aber könnte echt gehen....

Danke erstmal Friemler...

Vll. hat ja jemand dennoch DAS fertige Script...

Bitte warten ..
Mitglied: TsukiSan
25.07.2010 um 09:36 Uhr
Hallo ceng.de

eventuell hier etwas in Nur-VBS.
Darauf kannst du aufbauen!

01.
Dim Pfadangabe, PfadNeu 
02.
dim ProgName, LinkPfad 
03.
Dim ObjShell 
04.
 
05.
Dim objShortcut 
06.
 
07.
Pfadangabe = "D:\3\" 
08.
PfadNeu = "D:\4\" 
09.
 
10.
set fs = createobject("Scripting.FileSystemObject") 
11.
 
12.
ListOrdner (Pfadangabe) 
13.
 
14.
Sub ListOrdner(Pfadangabe) 
15.
	Set ordner = fs.getfolder(Pfadangabe) 
16.
 
17.
	For Each file In ordner.files 
18.
		 
19.
		Pfadangabe =File.path 
20.
 
21.
		temp = Split(Pfadangabe , "\") 
22.
 
23.
		ProgName = temp(Ubound(temp)) 
24.
		LinkPfad = Pfadangabe 
25.
		 
26.
		FS.MoveFile Pfadangabe , PfadNeu 
27.
 
28.
		LinkAnlegen 
29.
	Next 
30.
 
31.
End Sub 
32.
 
33.
Sub LinkAnlegen() 
34.
 
35.
Set ObjShell = CreateObject("WScript.Shell") 
36.
 
37.
  strLPfad = LinkPfad 
38.
  Set objShortcut=objShell.CreateShortcut(strLPfad & ".lnk") 
39.
  objShortcut.TargetPath= PfadNeu & ProgName 
40.
 
41.
  objShortcut.Save 
42.
 
43.
End Sub
Gruss und schönes WE

Tsuki
Bitte warten ..
Mitglied: ceng.de
25.07.2010 um 10:18 Uhr
THX Tsuki...

Ein guter Schritt!! Funktioniert und kann bestimmt weiterhelfen...

Momentan wird natürlich "nur" die Dateien im angegebene Ordner verlinkt und nicht in den Unterverzeichnissen. Die Verlinkung klappt aber hier herrvorragend. Kann ich das ganze noch recursive nach unten hinkriegen?
Bitte warten ..
Mitglied: TsukiSan
26.07.2010 um 02:12 Uhr
Kann ich das ganze noch recursive nach unten hinkriegen?

Wenn du dir in meinem Schnipsel ab Zeile 30 folgende Zeilen einfügst:
(noch in der SUB ListOrdner!)
01.
For Each Unterordner In Ordner.subfolders 
02.
		Pfadangabe = unterordner.path 
03.
		 
04.
		Listordner unterordner 
05.
next
dann kannst du auch die Unterordner durchsuchen und Dateien verschieben, bzw. verlinken lassen.

Gruss
Tsuki
Bitte warten ..
Mitglied: ceng.de
26.07.2010, aktualisiert 18.10.2012
Ich hänge gerade daran:
- wie ich im Unterverzeichnis die gleiche Ordnerstruktur erstelle wie im Originalverzeichnis...
- ob das Logdatei-Object nicht vollaufen kann, wenn viele tausend Dateien verschoben werden
- ob das Script nicht an einer oder anderer Stelle optimiert werden kann

Ideen?

Danke
CENG

SCRIPT V2 Stand 26.07.2010

01.
' http://www.administrator.de/forum/alte-dateien-auf-anderes-medium-verschieben-und-einen-link-erstellen-147586.html#comment-580079 
02.
' Script zum Verschieben von "alten" Dateien in ein anderes Verzeichnis und Link im Originalverzeichnis erstellen 
03.
' THX Tsuki (http://www.administrator.de/index.php?mod=show_public_profile&nr=79798) 
04.
' THX Friemler (http://www.administrator.de/index.php?mod=show_public_profile&nr=91808) 
05.
 
06.
 
07.
Dim OrgPfad, ArcPfad, Logdatei 
08.
Dim Logbucheintrag, Logbuchkopf, trennlinie 
09.
Dim DatName, LinkPfad 
10.
Dim ObjShell 
11.
 
12.
Dim objShortcut 
13.
 
14.
'Angabe mit Backslash "\" -> Bsp: c:\programme\ 
15.
 
16.
OrgPfad = "C:\ArchivTest\OrigDat\" 
17.
ArcPfad = "C:\ArchivTest\ArcDat\" 
18.
logdatei = "C:\ArchivTest\archivierung-"&Date()&".txt" 
19.
trennlinie = "*****************************************" 
20.
 
21.
 
22.
'Subroutine Ordner ArcPfad vorhanden 
23.
Archivordnerpruefung 
24.
 
25.
set fs = createobject("Scripting.FileSystemObject") 
26.
 
27.
ListOrdner (OrgPfad) 
28.
 
29.
''''''''''''''''''''''''''''''''''''''''''''''''''' 
30.
' Logfile Bearbeitung                             ' 
31.
''''''''''''''''''''''''''''''''''''''''''''''''''' 
32.
Dim objFSO 
33.
Set objFSO = CreateObject("Scripting.FileSystemObject") 
34.
 
35.
' Logeintrag schreiben 
36.
	Const ForReading = 1 
37.
	Const ForWriting = 2 
38.
 
39.
'Prüfung, ob Logdatei vorhanden, ansonsten erstelle mit Datum in Kopfzeile 
40.
  If (objFSO.FileExists(logdatei)) Then 
41.
	Set open_File = objFSO.OpenTextFile(logdatei, 8) 
42.
    	open_File.Close() 
43.
	Else 
44.
    	Set open_File = objFSO.OpenTextFile(logdatei, 2, "True") 
45.
    	open_File.Close() 
46.
	End If 
47.
 
48.
	Set objLogFile = objFSO.OpenTextFile(Logdatei, ForWriting, TRUE) 
49.
		Logbuchkopf = trennlinie & vbCrLf _ 
50.
    	& "Datum der Archivierung: " & Date() & vbCrLf _ 
51.
    	& trennlinie & vbCrLf 
52.
 
53.
		objLogFile.Write Logbuchkopf & Logbucheintrag 
54.
	' Schliesse Logdatei 
55.
		objLogFile.Close 
56.
 
57.
''''''''''''''''''''''''''''''''''''''''''''''''''' 
58.
'' Verschieben der Dateien                       '' 
59.
''''''''''''''''''''''''''''''''''''''''''''''''''' 
60.
 
61.
Sub ListOrdner(OrgPfad) 
62.
 
63.
Dim objFSO 
64.
Set objFSO = CreateObject("Scripting.FileSystemObject") 
65.
 
66.
Set ordner = fs.getfolder(OrgPfad) 
67.
 
68.
	For Each file In ordner.files 
69.
 
70.
		OrgPfad = File.path 
71.
		temp = Split(OrgPfad , "\") 
72.
		DatName = temp(Ubound(temp)) 
73.
		Wscript.echo "Datei in Bearbeitung: " & DatName 
74.
		Logbucheintrag = Logbucheintrag & vbCrLf & Time () & " " & OrgPfad 
75.
 
76.
	' Dateien tatsächlich verschieben 
77.
		LinkPfad = OrgPfad 
78.
        FS.MoveFile OrgPfad , ArcPfad 
79.
        'Subroutine Link für verschobene Datei anlegen 
80.
        LinkAnlegen 
81.
 
82.
	Next 
83.
 
84.
' Suche der Dateien in Unterordner 
85.
	For Each Unterordner In Ordner.subfolders 
86.
		OrgPfad = unterordner.path 
87.
		Wscript.echo "Unterpfad existiert: " 
88.
		Wscript.echo "Pfad: " & OrgPfad 
89.
 
90.
	' Lese auch in Unterordnerstruktur 
91.
		Listordner unterordner 
92.
 
93.
	Next 
94.
 
95.
End Sub 
96.
 
97.
''''''''''''''''''''''''''''''''''''''''''''''''''' 
98.
'' Prüfung ob Archivordner vorhanden             '' 
99.
''''''''''''''''''''''''''''''''''''''''''''''''''' 
100.
 
101.
Sub Archivordnerpruefung() 
102.
Dim Ordner 
103.
 
104.
Set fs = CreateObject("Scripting.FileSystemObject") 
105.
	If Not fs.FolderExists(ArcPfad) Then 
106.
    	fs.CreateFolder (ArcPfad) 
107.
	Else 
108.
		'nix machen 
109.
    End If 
110.
End Sub 
111.
 
112.
''''''''''''''''''''''''''''''''''''''''''''''''''' 
113.
'' für jede verschoben Datei link anlegen        '' 
114.
''''''''''''''''''''''''''''''''''''''''''''''''''' 
115.
 
116.
Sub LinkAnlegen() 
117.
 
118.
Set ObjShell = CreateObject("WScript.Shell") 
119.
 
120.
  strLPfad = LinkPfad 
121.
  Set objShortcut=objShell.CreateShortcut(strLPfad & ".lnk") 
122.
  objShortcut.TargetPath= ArcPfad & DatName 
123.
  objShortcut.Save 
124.
 
125.
End Sub
Bitte warten ..
Mitglied: TsukiSan
27.07.2010 um 04:39 Uhr
Hallo ceng.de

- wie ich im Unterverzeichnis die gleiche Ordnerstruktur erstelle wie im Originalverzeichnis...

Hierzu mal ein profanes Beispiel:
Ich möchte die gleiche Ordnerstruktur von C: auf D: übernehmen und es ist egal,
wieviele Ordner davon schon existieren:
01.
OrgPfad = "C:\TestNeu\1\2\3\" 
02.
ArcPfad = "D:" 
03.
 
04.
Set FSO = CreateObject("Scripting.FileSystemObject") 
05.
 
06.
tempfolder = split(OrgPfad , "\") 
07.
 
08.
For i = 1 to Ubound(tempfolder) 
09.
On error resume next 
10.
 
11.
	ArcPfad= ArcPfad  & "\" & tempfolder(i) 
12.
	Set OrdnerPfadNeu = FSO.CreateFolder(ArcPfad) 
13.
 
14.
Next
Du müßtest dann einfach (in deiner Sub Archivordnerpruefung() ) den Laufwerksbuchstaben vom Originalpad ersetzen in den, vom Archivpfad.
Diese Information stände beim Spiltten dann im 0-ten Array (in meinem Beispiel wäre das tempfolder(0) ).
Anschließend den Rest vom Orignalpfad an den Archivpfad übergeben und das ganze wieder "zusammendröseln".
Ähnlich, wie in meinem Beispiel.

Bestehende Dateien im Archivpfad werden hierbei nicht überschrieben!

Probier's mal aus

Gruss
Tsuki

Ps.: Wenn du alle Funktionen hast in deinem Script, dann schauen wir zum Schluß mal nach Kosmetik
Bitte warten ..
Mitglied: ceng.de
27.07.2010, aktualisiert 18.10.2012
Sch...ade, ich glaube, ich habe mich jetzt total verrannt und habe den Überblick verloren...

Ich versuche gerade die "simple" Integration des Codeschnipsels von Tsuki (übrigens @Tsuki: VIELEN DANK FÜR DIE HILFE). Scheint total einfach zu sein, aber für einen Batchprogrammierer wie mich (hihi Programmierer -> besser BatchzusammentippseraufniedrigstemNiveau) ist es garnicht so einfach, mit multidimensionalen Arrays zu hantieren...

Momentan kopiert das Script die Dateien aus dem ersten Verzeichnis und geht dann mit dem ExitCode 0 aus dem Script.

BTW: ich habe gerade Proton und "VbsEdit 4.6.1.0 - 64-bit version" als "Programmierumgebung" gibt es da etwas besseres und für einen "Anfänger" auch geeignetes Werkzeug?

01.
' http://www.administrator.de/forum/alte-dateien-auf-anderes-medium-verschieben-und-einen-link-erstellen-147586.html#comment-580079 
02.
' Version archivierungV03.vbs 
03.
' Script zum Verschieben von "alten" Dateien in ein anderes Verzeichnis und Link im Originalverzeichnis erstellen 
04.
' THX Tsuki (http://www.administrator.de/index.php?mod=show_public_profile&nr=79798) 
05.
' THX Friemler (http://www.administrator.de/index.php?mod=show_public_profile&nr=91808) 
06.
 
07.
 
08.
Dim OrgPfad, ArcPfad, ArchPfad 
09.
Dim Logdatei, Logbucheintrag, Logbuchkopf, trennlinie 
10.
Dim DatName, LinkPfad 
11.
Dim ObjShell 
12.
 
13.
Dim objShortcut 
14.
 
15.
'Angabe mit Backslash "\" -> Bsp: c:\programme\ 
16.
 
17.
OrgPfad = "C:\ArchivTest\OrigDat\" 
18.
OrgPfadstart = OrgPfad 
19.
ArcPfad = "C:\ArchivTest\ArcDat\" 
20.
logdatei = "C:\ArchivTest\archivierung-"&Date()&".txt" 
21.
trennlinie = "*****************************************" 
22.
 
23.
 
24.
'Subroutine: Ordner ArcPfad vorhanden? 
25.
Archivordnerpruefung 
26.
 
27.
set fs = createobject("Scripting.FileSystemObject") 
28.
 
29.
ListOrdner (OrgPfad) 
30.
 
31.
''''''''''''''''''''''''''''''''''''''''''''''''''' 
32.
' Logfile Bearbeitung                             ' 
33.
''''''''''''''''''''''''''''''''''''''''''''''''''' 
34.
Dim objFSO 
35.
Set objFSO = CreateObject("Scripting.FileSystemObject") 
36.
 
37.
' Logeintrag schreiben 
38.
	Const ForReading = 1 
39.
	Const ForWriting = 2 
40.
 
41.
'Prüfung, ob Logdatei vorhanden, ansonsten erstelle mit Datum in Kopfzeile 
42.
  If (objFSO.FileExists(logdatei)) Then 
43.
	Set open_File = objFSO.OpenTextFile(logdatei, 8) 
44.
    	open_File.Close() 
45.
	Else 
46.
    	Set open_File = objFSO.OpenTextFile(logdatei, 2, "True") 
47.
    	open_File.Close() 
48.
	End If 
49.
 
50.
	Set objLogFile = objFSO.OpenTextFile(Logdatei, ForWriting, TRUE) 
51.
		Logbuchkopf = trennlinie & vbCrLf _ 
52.
    	& "Datum der Archivierung: " & Date() & vbCrLf _ 
53.
    	& trennlinie & vbCrLf 
54.
 
55.
		objLogFile.Write Logbuchkopf & Logbucheintrag 
56.
	' Schliesse Logdatei 
57.
		objLogFile.Close 
58.
 
59.
''''''''''''''''''''''''''''''''''''''''''''''''''' 
60.
'' Verschieben der Dateien                       '' 
61.
''''''''''''''''''''''''''''''''''''''''''''''''''' 
62.
 
63.
Sub ListOrdner(OrgPfad) 
64.
 
65.
Dim objFSO 
66.
Set objFSO = CreateObject("Scripting.FileSystemObject") 
67.
 
68.
Set ordner = fs.getfolder(OrgPfad) 
69.
 
70.
	For Each file In ordner.files 
71.
 
72.
		OrgPfad = File.path 
73.
 
74.
   Next  
75.
  
76.
				   
77.
		OrgPfadDatname = Split(OrgPfad , "\") 
78.
		DatName = OrgPfadDatname(Ubound(OrgPfadDatname)) 
79.
		Wscript.echo "Datei: " & OrgPfad & " -> " & Archpfad 
80.
		Logbucheintrag = Logbucheintrag & vbCrLf & Time () & " " & OrgPfad 
81.
 
82.
	' Dateien tatsächlich verschieben 
83.
		LinkPfad = OrgPfad 
84.
        FS.MoveFile OrgPfad , ArchPfad 
85.
      'Subroutine: Link für verschobene Datei anlegen 
86.
        LinkAnlegen 
87.
 
88.
 
89.
 
90.
' Suche der Dateien in Unterordner 
91.
	For Each Unterordner In Ordner.subfolders 
92.
		OrgPfad = unterordner.Path 
93.
		 
94.
	'Archivpfad anpassen 
95.
		WScript.Echo trennlinie 
96.
		arctempfolder = OrgPfad 
97.
		arctempfolderstrArray = Split(arctempfolder, Orgpfadstart) 
98.
		For i = 1 to (Ubound(arctempfolderstrArray))-1 
99.
		ArchPfad = ArcPfad & arctempfolderstrArray(i) 
100.
		    WScript.echo "Archivpfadneu: " & ArcPfad & arctempfolderstrArray(i) & " (Array:" & i &")" 
101.
		    WScript.echo "OK" 
102.
			WScript.Echo trennlinie 
103.
		Next 
104.
		 
105.
'		Wscript.echo "Unterpfad existiert: " 
106.
		Wscript.echo "OrgPfad: " & OrgPfad 
107.
		Wscript.echo "ArchPfad: " & ArchPfad 
108.
 
109.
	' Lese auch in Unterordnerstruktur 
110.
		Listordner unterordner 
111.
 
112.
	Next 
113.
 
114.
End Sub 
115.
 
116.
''''''''''''''''''''''''''''''''''''''''''''''''''' 
117.
'' Archivstruktur vorbereiten                    '' 
118.
''''''''''''''''''''''''''''''''''''''''''''''''''' 
119.
 
120.
'Sub SplitPathFromFile() 
121.
'  Dim Pfad 
122.
123.
'  Pfad = Orgpfad 
124.
'  While right$(Pfad, 1) <> "\" And _ 
125.
'   right$(Pfad, 1) <> ":" And Pfad <> "" 
126.
'    Pfad = left$(Pfad, Len(Pfad) - 1) 
127.
'  Wend 
128.
'  If right$(Pfad, 1) = "\" Then _ 
129.
'    Pfad = left$(Pfad, Len(Pfad) - 1) 
130.
131.
'  Archivpfad = Pfad 
132.
'End Sub 
133.
 
134.
''''''''''''''''''''''''''''''''''''''''''''''''''' 
135.
'' Prüfung ob Archivordner vorhanden             '' 
136.
''''''''''''''''''''''''''''''''''''''''''''''''''' 
137.
 
138.
Sub Archivordnerpruefung() 
139.
Dim Ordner 
140.
 
141.
Set fs = CreateObject("Scripting.FileSystemObject") 
142.
	If Not fs.FolderExists(ArcPfad) Then 
143.
    	fs.CreateFolder (ArcPfad) 
144.
	Else 
145.
		'nix machen 
146.
    End If 
147.
     
148.
 
149.
'tempfolder = split(OrgPfad , "\") 
150.
 
151.
'For i = 1 to Ubound(tempfolder) 
152.
'On error resume next 
153.
 
154.
'	ArcPfadNeu= ArcPfad  & "\" & tempfolder(i) 
155.
'	Set OrdnerPfadNeu = FSO.CreateFolder(ArcPfad) 
156.
'	wscript.echo "Neuer ArchivpfadArcPfadNeu 
157.
'	wscript.echo Ordnerpfadneu  
158.
'Next 
159.
 
160.
'Set fs = CreateObject("Scripting.FileSystemObject") 
161.
'	If Not fs.FolderExists(OrgPfad) Then 
162.
'    	wscript.echo "Originalverzeichnisangabe fehlerhaft!" 
163.
'		wscript.echo OrgPfad 
164.
'		Logbucheintrag = Logbucheintrag & vbCrLF & "Originalverzeichnisangabe fehlerhaft!" 
165.
'	Else 
166.
'		'nix machen 
167.
'   End If 
168.
 
169.
End Sub 
170.
 
171.
''''''''''''''''''''''''''''''''''''''''''''''''''' 
172.
'' für jede verschoben Datei link anlegen        '' 
173.
''''''''''''''''''''''''''''''''''''''''''''''''''' 
174.
 
175.
Sub LinkAnlegen() 
176.
 
177.
Set ObjShell = CreateObject("WScript.Shell") 
178.
 
179.
  strLPfad = LinkPfad 
180.
  Set objShortcut=objShell.CreateShortcut(strLPfad & ".lnk") 
181.
  objShortcut.TargetPath= ArcPfad & DatName 
182.
  objShortcut.Save 
183.
 
184.
End Sub
Bitte warten ..
Mitglied: TsukiSan
28.07.2010, aktualisiert 18.10.2012
Hallo ceng.de

Sch...ade, ich glaube, ich habe mich jetzt total verrannt und habe den Überblick verloren...
In so einem Fall mache ich immer folgendes:
1) ich hol’ mir ‚nen Kaffee
2) Ich besorg mir auf’m Rückweg von der Küche einen Stift und etwas Malpapier
3) Dann schreibe ich mir nochmal alles gaaannzz langsam auf

Du möchtest:
Dateien von einem Platz in einen anderen verschieben
In den alten Ordnern nur noch die Links ablegen, die auf die Dateien zeigen
In den neuen Ordner(n) die alte Ordnerstruktur anlegen/beibehalten
Und das ganze in einem Logfile (was dann gewisse Abläufe „mitschreibt) speichern.

Fangen wir mal an:
Den Vorkopf lassen wir so, wie er schon ist
01.
' http://www.administrator.de/forum/alte-dateien-auf-anderes-medium-verschieben-und-einen-link-erstellen-147586.html#comment-580079 
02.
' Version archivierungV03.vbs 
03.
' Script zum Verschieben von "alten" Dateien in ein anderes Verzeichnis und Link im Originalverzeichnis erstellen 
04.
' THX Tsuki (http://www.administrator.de/index.php?mod=show_public_profile&nr=79798) 
05.
' THX Friemler (http://www.administrator.de/index.php?mod=show_public_profile&nr=91808) 
06.
 
07.
 
08.
Dim OrgPfad, ArcPfad, ArchPfad 
09.
Dim Logdatei, Logbucheintrag, Logbuchkopf, trennlinie 
10.
Dim DatName, LinkPfad 
11.
Dim ObjShell 
12.
Dim objFSO , Fs 
13.
Dim objShortcut 
14.
Dim ArrOrig , ArrArch 
15.
 
16.
'Angabe mit Backslash "\" -> Bsp: c:\programme\ 
17.
 
18.
OrgPfad = "C:\Test\" 
19.
OrgPfadstart = OrgPfad 
20.
ArcPfad = "D:\Archiv" 
21.
logdatei = "D:\archivierung-" & Date() & ".txt" 
22.
trennlinie = "*****************************************"
Dann lesen wir uns erst einmal (Warum auch nicht?) alle Pfade und vorhanden Dateien ein und schreiben diese in Variablen
01.
Set objFSO = CreateObject("Scripting.FileSystemObject") 
02.
set fs = createobject("Scripting.FileSystemObject") 
03.
 
04.
ListOrdner OrgPfad 
05.
 
06.
 
07.
Sub ListOrdner(OrgPfad) 
08.
 
09.
Set ordner = fs.getfolder(OrgPfad) 
10.
 
11.
' Suche nach allen Dateien im jeweiligen Pfad 
12.
' und speichere diese in einer Variable ab. 
13.
' Außer, es handelt sich um einen LINK! 
14.
	For Each Datei In ordner.files 
15.
		If Not LCase(Right(Datei.Path,3)) = Lcase("lnk") then 
16.
			ArrOrig = ArrOrig & Datei.Path & vbcrlf 
17.
			ArrArch = ArrArch & Datei.Path & vbcrlf 
18.
		End If 
19.
 
20.
   	Next  
21.
  
22.
' Suche nach Unterordner 
23.
	For Each Unterordner In Ordner.subfolders 
24.
	 
25.
		Listordner unterordner 
26.
 
27.
	Next 
28.
 
29.
End Sub
Dann noch in Arrays geschoben. Da können wir später mittels FOR-Schleifen jede Menge Scriptzeilen sparen
01.
 
02.
' Bringe die Variablen in ein Array 
03.
	ArrOrig = Split(ArrOrig ,vbcrlf) 
04.
	ArrArch = Split(ArrArch ,vbcrlf)
Jetzt schon vielleicht die Archivpfad-Informationen ablegen in ein Array
01.
' Gib dem Archiv-Array die richtigen Anfangsdaten bezüglich des Ablagepfades 
02.
For i = 0 to Ubound(ArrArch) 
03.
If Not ArrArch(i) = "" then 
04.
	temp = Split(ArrArch(i), "\") 
05.
	temp(0) = ArcPfad 
06.
	ArrArch(i) = join(temp , "\") 
07.
End If 
08.
Next
Und schon können wir die Ordner anlegen, wohin später die Dateien hingeschubst werden sollen
01.
' jetzt legen wir uns - falls nötig! - die Ordner im Archivpfad an 
02.
For i = 0 to Ubound(ArrArch) 
03.
	On Error resume next 
04.
 
05.
temp = ArcPfad 
06.
Set OrdnerPfadNeu = FS.CreateFolder(temp) 
07.
 
08.
	temp1 = Split(ArrArch(i), "\") 
09.
	temp1(Ubound(temp1)) = "" 
10.
	temp2 = ArcPfad 
11.
	for k = 2 to Ubound(temp1) 
12.
		On Error resume next 
13.
		temp2 = temp2 & "\" & temp1(k) 
14.
		Set OrdnerPfadNeu = FS.CreateFolder(temp2) 
15.
	Next 
16.
 
17.
Next
So, bis hierhin haben wir noch nicht viel kaputt gemacht
Jetzt können wir auch schon die Dateien verschieben:
01.
'jetzt können wir die Dateien verschieben 
02.
For i = 0 to Ubound(ArrOrig) 
03.
If Not ArrOrig(i) = "" Then 
04.
	FS.MoveFile ArrOrig(i) , ArrArch(i) 
05.
	'Fuer das Logfile 
06.
	Logbucheintrag = Logbucheintrag & Time () & "Datei: " & ArrOrig(i) & " verschoben nach: " & ArrArch(i) & vbcrlf 
07.
End If 
08.
Next
Was fehlt nach dem Verschieben? Rochtig! Die Links müssen erstellt werden.
Wir haben alle Infos ja noch in unseren Arrays J
01.
'und zum Schluss legen wir uns noch die Links an 
02.
  Set ObjShell = CreateObject("WScript.Shell") 
03.
For i = 0 to Ubound(ArrOrig) 
04.
If Not ArrOrig(i) = "" then 
05.
  strLPfad = ArrOrig(i) 
06.
  Set objShortcut=objShell.CreateShortcut(strLPfad & ".lnk") 
07.
  objShortcut.TargetPath= ArrArch(i) 
08.
  objShortcut.Save 
09.
End If 
10.
Next
So, jetzt haben wir’s soweit erst mal. Aber, genau! Das Logfile fehlt noch:
01.
'achso, jetzt soll auch noch ein Logfile angelegt werden. 
02.
  If (objFSO.FileExists(logdatei)) Then 
03.
	Set open_File = objFSO.OpenTextFile(logdatei, 8) 
04.
    	open_File.Close() 
05.
	Else 
06.
    	Set open_File = objFSO.CreateTextFile(logdatei,True) 
07.
    	open_File.Close() 
08.
	End If 
09.
 
10.
	Set objLogFile = objFSO.OpenTextFile(Logdatei, 8) 
11.
	Logbuchkopf = trennlinie & vbCrLf _ 
12.
    	& "Datum der Archivierung: " & Date() & vbCrLf _ 
13.
    	& trennlinie & vbCrLf 
14.
 
15.
	objLogFile.Write (Logbuchkopf & Logbucheintrag) 
16.
	' Schliesse Logdatei 
17.
	objLogFile.Close
Und zum Schluß natürlich...
01.
Set objFSO = Nothing 
02.
set fs = Nothing 
03.
Set ObjShell = Nothing 
04.
 
05.
Msgbox "Durch!"
So, ceng.de, jetzt haben wir erst einmal deine Anforderungen soweit erfüllt.
Was jetzt noch kommt ist Kosmetik und Vereinfachung. Ich habe mal alles etwas langatmig geschrieben, damit man besser die Gedankengänge verfolgen kann.
Sicher läßt sich einiges verkürzen/schöner schreiben.
Aber.....

Gruss
Tsuki

Ps.: Das ganze sieht jetzt so aus:
01.
' http://www.administrator.de/forum/alte-dateien-auf-anderes-medium-verschieben-und-einen-link-erstellen-147586.html#comment-580079 
02.
' Version archivierungV03.vbs 
03.
' Script zum Verschieben von "alten" Dateien in ein anderes Verzeichnis und Link im Originalverzeichnis erstellen 
04.
' THX Tsuki (http://www.administrator.de/index.php?mod=show_public_profile&nr=79798) 
05.
' THX Friemler (http://www.administrator.de/index.php?mod=show_public_profile&nr=91808) 
06.
 
07.
 
08.
Dim OrgPfad, ArcPfad, ArchPfad 
09.
Dim Logdatei, Logbucheintrag, Logbuchkopf, trennlinie 
10.
Dim DatName, LinkPfad 
11.
Dim ObjShell 
12.
Dim objFSO , Fs 
13.
Dim objShortcut 
14.
Dim ArrOrig , ArrArch 
15.
 
16.
'Angabe mit Backslash "\" -> Bsp: c:\programme\ 
17.
 
18.
OrgPfad = "C:\Test\" 
19.
OrgPfadstart = OrgPfad 
20.
ArcPfad = "D:\Archiv" 
21.
logdatei = "D:\archivierung-" & Date() & ".txt" 
22.
trennlinie = "*****************************************" 
23.
 
24.
Set objFSO = CreateObject("Scripting.FileSystemObject") 
25.
set fs = createobject("Scripting.FileSystemObject") 
26.
 
27.
ListOrdner OrgPfad 
28.
 
29.
 
30.
Sub ListOrdner(OrgPfad) 
31.
 
32.
Set ordner = fs.getfolder(OrgPfad) 
33.
 
34.
' Suche nach allen Dateien im jeweiligen Pfad 
35.
' und speichere diese in einer Variable ab. 
36.
' Außer, es handelt sich um einen LINK! 
37.
	For Each Datei In ordner.files 
38.
		If Not LCase(Right(Datei.Path,3)) = Lcase("lnk") then 
39.
			ArrOrig = ArrOrig & Datei.Path & vbcrlf 
40.
			ArrArch = ArrArch & Datei.Path & vbcrlf 
41.
		End If 
42.
 
43.
   	Next  
44.
  
45.
' Suche nach Unterordner 
46.
	For Each Unterordner In Ordner.subfolders 
47.
	 
48.
		Listordner unterordner 
49.
 
50.
	Next 
51.
 
52.
End Sub 
53.
 
54.
' Bringe die Variablen in ein Array 
55.
	ArrOrig = Split(ArrOrig ,vbcrlf) 
56.
	ArrArch = Split(ArrArch ,vbcrlf) 
57.
 
58.
' Gib dem Archiv-Array die richtigen Anfangsdaten bezüglich des Ablagepfades 
59.
For i = 0 to Ubound(ArrArch) 
60.
If Not ArrArch(i) = "" then 
61.
	temp = Split(ArrArch(i), "\") 
62.
	temp(0) = ArcPfad 
63.
	ArrArch(i) = join(temp , "\") 
64.
End If 
65.
Next 
66.
 
67.
' jetzt legen wir uns - falls nötig! - die Ordner im Archivpfad an 
68.
For i = 0 to Ubound(ArrArch) 
69.
	On Error resume next 
70.
 
71.
temp = ArcPfad 
72.
Set OrdnerPfadNeu = FS.CreateFolder(temp) 
73.
 
74.
	temp1 = Split(ArrArch(i), "\") 
75.
	temp1(Ubound(temp1)) = "" 
76.
	temp2 = ArcPfad 
77.
	for k = 2 to Ubound(temp1) 
78.
		On Error resume next 
79.
		temp2 = temp2 & "\" & temp1(k) 
80.
		Set OrdnerPfadNeu = FS.CreateFolder(temp2) 
81.
	Next 
82.
 
83.
Next 
84.
 
85.
'jetzt können wir die Dateien verschieben 
86.
For i = 0 to Ubound(ArrOrig) 
87.
If Not ArrOrig(i) = "" Then 
88.
	FS.MoveFile ArrOrig(i) , ArrArch(i) 
89.
	'Fuer das Logfile 
90.
	Logbucheintrag = Logbucheintrag & Time () & "Datei: " & ArrOrig(i) & " verschoben nach: " & ArrArch(i) & vbcrlf 
91.
End If 
92.
Next 
93.
 
94.
 
95.
'und zum Schluss legen wir uns noch die Links an 
96.
  Set ObjShell = CreateObject("WScript.Shell") 
97.
For i = 0 to Ubound(ArrOrig) 
98.
If Not ArrOrig(i) = "" then 
99.
  strLPfad = ArrOrig(i) 
100.
  Set objShortcut=objShell.CreateShortcut(strLPfad & ".lnk") 
101.
  objShortcut.TargetPath= ArrArch(i) 
102.
  objShortcut.Save 
103.
End If 
104.
Next 
105.
 
106.
'achso, jetzt soll auch noch ein Logfile angelegt werden. 
107.
  If (objFSO.FileExists(logdatei)) Then 
108.
	Set open_File = objFSO.OpenTextFile(logdatei, 8) 
109.
    	open_File.Close() 
110.
	Else 
111.
    	Set open_File = objFSO.CreateTextFile(logdatei,True) 
112.
    	open_File.Close() 
113.
	End If 
114.
 
115.
	Set objLogFile = objFSO.OpenTextFile(Logdatei, 8) 
116.
	Logbuchkopf = trennlinie & vbCrLf _ 
117.
    	& "Datum der Archivierung: " & Date() & vbCrLf _ 
118.
    	& trennlinie & vbCrLf 
119.
 
120.
	objLogFile.Write (Logbuchkopf & Logbucheintrag) 
121.
	' Schliesse Logdatei 
122.
	objLogFile.Close 
123.
 
124.
 
125.
Set objFSO = Nothing 
126.
set fs = Nothing 
127.
Set ObjShell = Nothing 
128.
 
129.
Msgbox "Durch!"
Bitte warten ..
Mitglied: ceng.de
29.07.2010 um 17:31 Uhr
Hi Tsuki,

ich glaube, das Script hat einen Fehler im Bereich:

01.
For i = 0 to Ubound(ArrArch) 
02.
If Not ArrArch(i) = "" then 
03.
	temp = Split(ArrArch(i), "\") 
04.
	temp(0) = ArcPfad 
05.
	ArrArch(i) = join(temp , "\") 
06.
End If
Dort wird der Archivordner doch wieder zusammengesetzt (Join) und das Ergebnis ist falsch:
Nach dem ArchPfad wird der OrgPfad angehängt, aber mit zwei \ "Backslashs" getrennt (wahrscheinlich einer vom ArchPfad und einer vom join (temp , "\")...

-> Damit kann keine Datei verschoben werden, allerdings werden die Ordner unterhalb von ArchPfad sauber angelegt...

(Hier der Auszug aus dem Logfile )

17:15:38 Datei: C:\ArchivTest\OrigDat\ACME.EXE verschoben nach: C:\ArchivTest\ArcDat\\ArchivTest\OrigDat\ACME.EXE
17:15:38 Datei: C:\ArchivTest\OrigDat\ACMSETUP.EXE verschoben nach: C:\ArchivTest\ArcDat\\ArchivTest\OrigDat\ACMSETUP.EXE

d.h. wenn ich Richtig liege (bitte um Bestätigung), dann muß ich an dieser Stelle schauen, daß ich das zweite "\" rausbekomme.
Bitte warten ..
Mitglied: ceng.de
29.07.2010 um 17:47 Uhr
Und an der Stelle
01.
'jetzt können wir die Dateien verschieben 
02.
	Wsscript.echo "Verschiebe Start" 
03.
	 
04.
For i = 0 to Ubound(ArrOrig) 
05.
If Not ArrOrig(i) = "" Then 
06.
	Wsscript.echo "Verschiebe " & ArrOrig (i) & "nach " & ArrArch (i) 
07.
	FS.MoveFile ArrOrig(i) , ArrArch(i) 
08.
	'Fuer das Logfile
bin ich mir auch nicht sicher, ob es so geht. Weder die Echo Zeile oben, noch die unten werden angezeigt. Geht das Script überhaupt dorthin, oder biegt es irgenwo vorher ab?
Bitte warten ..
Mitglied: TsukiSan
30.07.2010 um 00:45 Uhr
Hallo ceng.de

in meinem Script oben in Zeile 20 darf als
ArcPfad = "D:\Archiv"
kein Backslash am Ende sein!!!! Dann würden beide Teile (Ordneranlegen/Dateien verschieben) nicht
funktionieren, da du dann doppelte Backslashes erhälst.
Das kann man aber auch noch ziemlich oben am Script (eventuell Zeile 26) abfangen mit:
01.
If Right(ArcPfad,1) = "\" then ArcPfad = Left(ArcPfad , Len(ArcPfad) - 1)
Somit bekämen wir in deinem Beispiel
C:\ArchivTest\ArcDat\
den letzten Backslash ganz rechts wieder weg.

Probier das mal oder setze
ArcPfad = C:\ArchivTest\ArcDat
gleich ganz ohne Backslash am Anfang deines Scriptes
So hattes es bei mir im Test bestens funktioniert!

Kopier mal meinen zuletzt geposteten Code Schnipsel (unter Ps.:) und teste den mal!

Gruss
Tsuki
Bitte warten ..
Mitglied: TsukiSan
30.07.2010, aktualisiert 18.10.2012
Hallo ceng.de

Mir ist noch etwas aufgefallen!
Bei meinem Test hier habe ich als Archivordner folgenden Pfad zum Testen ausgewählt
ArcPfad = „D:\Archiv“
In diesem Falle funktioniert meine Scriptvortgabe, selbst wenn der Ordner ARCHIV noch nicht existiert auf dem Zielpfad. Dann wird er erst einmal angelegt. Aber du möchtest ja zum Beispiel es so haben
ArcPfad = „D:\Archiv\Ablage\MeineDateien“ usw.
Wenn diese Ordner noch nicht existieren, haben wir ein Problem

Aber wir können einen Griff in die Trickkiste wagen und starten das Script mal so durch. Hierbei wird ein kleines Fenster aufgemacht, wo der Benutzer erst einmal den Zielpfad auswählen muss. Ggf. kann/können über dieses kleine Fenster ein neuer/neue Ordner erstellt werden.

Dieses kleine Code-Schnipselchen (Ordner auswählen) ist übrigens hier aus dem Forum von unserem bastla J

01.
' http://www.administrator.de/forum/alte-dateien-auf-anderes-medium-verschieben-und-einen-link-erstellen-147586.html#comment-580079 
02.
' Version archivierungV03_1.vbs 
03.
' Script zum Verschieben von "alten" Dateien in ein anderes Verzeichnis und Link im Originalverzeichnis erstellen 
04.
' THX Tsuki (http://www.administrator.de/index.php?mod=show_public_profile&nr=79798) 
05.
' THX Friemler (http://www.administrator.de/index.php?mod=show_public_profile&nr=91808) 
06.
' THX bastla (http://www.administrator.de/index.php?mod=profile&id=34314) 
07.
 
08.
 
09.
Dim OrgPfad, ArcPfad, ArchPfad 
10.
Dim Logdatei, Logbucheintrag, Logbuchkopf, trennlinie 
11.
Dim DatName, LinkPfad 
12.
Dim ObjShell 
13.
Dim objFSO , Fs 
14.
Dim objShortcut 
15.
Dim ArrOrig , ArrArch 
16.
 
17.
'Angabe mit Backslash "\" -> Bsp: c:\programme\ 
18.
 
19.
OrgPfad = "C:\Test\" 
20.
OrgPfadstart = OrgPfad 
21.
ArcPfad = "D:\Archiv" 
22.
logdatei = "D:\archivierung-" & Date() & ".txt" 
23.
trennlinie = "*****************************************" 
24.
 
25.
‚ oeffnet ein Dialogfenster zur Auswahl eines Ordners 
26.
AuswahlTitel = "Bitte Archivordner auswählen" 
27.
StartOrdner = "17" 
28.
Set Auswahl = CreateObject("Shell.Application").BrowseForFolder(0,AuswahlTitel,16,StartOrdner) 
29.
If TypeName(Auswahl) = "Nothing" Then 
30.
    MsgBox "Abbruch gewählt!" 
31.
    WScript.Quit 
32.
Else 
33.
    Set Ordner = Auswahl.Self 
34.
    ArcPfad = Ordner.Path 
35.
End If 
36.
 
37.
Set objFSO = CreateObject("Scripting.FileSystemObject") 
38.
set fs = createobject("Scripting.FileSystemObject") 
39.
 
40.
ListOrdner OrgPfad 
41.
 
42.
Sub ListOrdner(OrgPfad) 
43.
 
44.
Set ordner = fs.getfolder(OrgPfad) 
45.
 
46.
' Suche nach allen Dateien im jeweiligen Pfad 
47.
'  und speichere diese in einer Variable ab. 
48.
' Außer, es handelt sich um einen LINK! 
49.
	For Each Datei In ordner.files 
50.
		If Not LCase(Right(Datei.Path,3)) = Lcase("lnk") then 
51.
			ArrOrig = ArrOrig & Datei.Path & vbcrlf 
52.
			ArrArch = ArrArch & Datei.Path & vbcrlf 
53.
		End If 
54.
 
55.
   	Next  
56.
  
57.
' Suche nach Unterordner 
58.
	For Each Unterordner In Ordner.subfolders 
59.
	 
60.
		Listordner unterordner 
61.
 
62.
	Next 
63.
 
64.
End Sub 
65.
 
66.
' Bringe die Variablen in ein Array 
67.
	ArrOrig = Split(ArrOrig ,vbcrlf) 
68.
	ArrArch = Split(ArrArch ,vbcrlf) 
69.
 
70.
' Gib dem Archiv-Array die richtigen Anfangsdaten bezüglich des Ablagepfades 
71.
For i = 0 to Ubound(ArrArch) 
72.
If Not ArrArch(i) = "" then 
73.
	temp = Split(ArrArch(i), "\") 
74.
	temp(0) = ArcPfad 
75.
	ArrArch(i) = join(temp , "\") 
76.
End If 
77.
Next 
78.
 
79.
' jetzt legen wir uns - falls nötig! - die Ordner im Archivpfad an 
80.
For i = 0 to Ubound(ArrArch) 
81.
	On Error resume next 
82.
 
83.
temp = ArcPfad 
84.
Set OrdnerPfadNeu = FS.CreateFolder(temp) 
85.
 
86.
	temp1 = Split(ArrArch(i), "\") 
87.
	temp1(Ubound(temp1)) = "" 
88.
	temp2 = ArcPfad 
89.
	ZaehlerAnfang = Split(ArcPfad , "\") 
90.
	for k = (Ubound(ZaehlerAnfang) + 1) to Ubound(temp1) 
91.
		On Error resume next 
92.
		temp2 = temp2 & "\" & temp1(k) 
93.
		Set OrdnerPfadNeu = FS.CreateFolder(temp2) 
94.
	Next 
95.
 
96.
Next 
97.
 
98.
'jetzt können wir die Dateien verschieben 
99.
For i = 0 to Ubound(ArrOrig) 
100.
If Not ArrOrig(i) = "" Then 
101.
	FS.MoveFile ArrOrig(i) , ArrArch(i) 
102.
	'Fuer das Logfile 
103.
	Logbucheintrag = Logbucheintrag & Time () & "Datei: " & ArrOrig(i) & " verschoben nach: " & ArrArch(i) & vbcrlf 
104.
End If 
105.
Next 
106.
 
107.
 
108.
'und zum Schluss legen wir uns noch die Links an 
109.
  Set ObjShell = CreateObject("WScript.Shell") 
110.
For i = 0 to Ubound(ArrOrig) 
111.
If Not ArrOrig(i) = "" then 
112.
  strLPfad = ArrOrig(i) 
113.
  Set objShortcut=objShell.CreateShortcut(strLPfad & ".lnk") 
114.
  objShortcut.TargetPath= ArrArch(i) 
115.
  objShortcut.Save 
116.
End If 
117.
Next 
118.
 
119.
'achso, jetzt soll auch noch ein Logfile angelegt werden. 
120.
  If (objFSO.FileExists(logdatei)) Then 
121.
	Set open_File = objFSO.OpenTextFile(logdatei, 8) 
122.
    	open_File.Close() 
123.
	Else 
124.
    	Set open_File = objFSO.CreateTextFile(logdatei,True) 
125.
    	open_File.Close() 
126.
	End If 
127.
 
128.
	Set objLogFile = objFSO.OpenTextFile(Logdatei, 8) 
129.
	Logbuchkopf = trennlinie & vbCrLf _ 
130.
    	& "Datum der Archivierung: " & Date() & vbCrLf _ 
131.
    	& trennlinie & vbCrLf 
132.
 
133.
	objLogFile.Write (Logbuchkopf & Logbucheintrag) 
134.
	' Schliesse Logdatei 
135.
	objLogFile.Close 
136.
 
137.
 
138.
Set objFSO = Nothing 
139.
set fs = Nothing 
140.
Set ObjShell = Nothing 
141.
 
142.
Msgbox "Durch!"
teste diesen Code mal so, wie er ist. Dann bereden wir Feinheiten später. Dieser Schnipsel hat bei mir ohne Probleme funktioniert und folgende Sachen durchgeführt:
1) Archivpfad auswählen und ggf. Ordner anlegen
2) Alle Dateien im Originalverzeichnis erfassen und dann verschieben, solange es keine Links sind
3) Zum Schluss ein Logfile anlegen.

(WinXP Pro Eng)

Gruss
Tsuki
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(1)

Tipp von agowa338 zum Thema Windows 10 ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...