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

alte Dateien per Batch verschieben aber relative Struktur beibehalten

Frage Entwicklung Batch & Shell

Mitglied: HansG

HansG (Level 1) - Jetzt verbinden

27.10.2009, aktualisiert 18.10.2012, 9568 Aufrufe, 8 Kommentare

OS: Windows Server 2003
Struktur:

C:\Quelle\Dateien
C:\Quelle\XYZ\Dateien
C:\Quelle\ABC\Dateien

C:\Ziel\Dateien
C:\ZIEL\XYZ\Dateien
C:\ZIEL\ABC\Dateien

Hallo zusammen,

habe ein Problem mit einer Batchdatei.

Es sollen in einem Verzeichnis rekursiv die Dateien geprüft werden, ob sie älter als beispielsweise 35 Tage sind.
Ist das der Fall, sollen sie in ein Zielverzeichnis inklusive der relativen Ordnerstruktur verschoben werden. Wie oben dargestellt also von

C:\Quelle\Dateien
und
C:\Quelle\relativeStruktur\Dateien

nach
C:\Ziel\Dateien
und
C:\Ziel\relativeStruktur\Dateien

Ich bastel schon die ganze Zeit mit forfiles.exe herum, aber er kopiert mir alle Dateien nur in C:\Ziel\ ohne die relative Ordnerstruktur zu behalten.

Wären es nur bestimmte Unterordner könnte ich diese einzeln abarbeiten lassen, aber es können auch immer neue Ordner im Quellverzeichnis entstehen und diese sollen auch berücksichtigt werden.
Hat vielleicht jemand einen Tipp oder gar eine Lösung parat?

Danke im Voraus.

Mit freundlichen Grüßen

Hans
Mitglied: TsukiSan
27.10.2009 um 11:34 Uhr
Hallo HansG,

wie wär's auf der Basis von VBS?
01.
DateiOrig = "C:\Quelle\Dateien\Test.txt" 
02.
DateiNeu = "C:\Ziel\Dateien\Test.txt 
03.
 
04.
Set CPYFSO = CreateObject("Scripting.FileSystemObject") 
05.
 
06.
CPYFSO.CopyFile DateiOrig , DateiNeu , True
?
Das ist das Grundgerüst! Man kann das verfeinern/anpassen.

Gruß
Tsuki
Bitte warten ..
Mitglied: LotPings
27.10.2009 um 11:47 Uhr
Hallo Hans,

das Tool delage32 von Horst Schaeffer kann das in einem Rutsch erledigen.

01.
Pushd C:\Quelle 
02.
delage32 * 35 /recurse /move c:\Ziel /preview 
03.
Popd
wenn die Ausgabe deinen Anforderunge entspricht, kannst du /preview entfernen.

Gruß
LotPings
Bitte warten ..
Mitglied: bennib22
27.10.2009 um 12:53 Uhr
Hallo,

Machs doch ganz dumm!
Kopiere alle Dateien mit copy bzw xcopy
und lösch danach die anderen Dateien mit del *.*

Gruß
bennib22
Bitte warten ..
Mitglied: HansG
27.10.2009 um 14:18 Uhr
Zitat von LotPings:
Hallo Hans,

das Tool [http://home.mnet-online.de/horst.muc/wbat32d.htm delage32
von Horst Schaeffer] kann das in einem Rutsch erledigen.

01.
> Pushd C:\Quelle 
02.
> delage32 * 35 /recurse /move c:\Ziel /preview 
03.
> Popd 
04.
> 
wenn die Ausgabe deinen Anforderunge entspricht, kannst du /preview
entfernen.

Gruß
LotPings

Vielen Dank.

Das Tool hat mir sehr geholfen!
Bitte warten ..
Mitglied: ceng.de
24.07.2010 um 19:49 Uhr
Hat jemand noch eine Idee, wie ich einen Link der verschobenen Datei auf die neue Datei im Zielverzeichnis erzeuge?
Bitte warten ..
Mitglied: LotPings
26.07.2010 um 18:48 Uhr
Zitat von ceng.de:
Hat jemand noch eine Idee, wie ich einen Link der verschobenen Datei auf die neue Datei im Zielverzeichnis erzeuge?

Hallo ceng.de,

willkommen im Forum.

Ich kann da jetzt keinen Bezug zur eigentlichen Frage erkennen,
wie wärs wenn du eine eigene Frage mit deinem Kontext aufmachst?

Dann haben auch weitaus mehr Leute die Möglichkeit dein neues Poblem anzusehen / eine Lösung anzubieten.

Für das Erstellen von Links brauchst du ein 3rdParty Tool oder vbscript.

Gruß
LotPings
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: LotPings
27.07.2010 um 18:55 Uhr
Zitat von ceng.de:
Ideen?

Ja,
auch wenn ich mich wiederhole,
mache bitte einen neuen Frage-Beitrag auf - nicht anhängen.

gruß
LotPings
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (22)

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

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...