weider1978
Goto Top

Batch kompletter ordner Verschieben wenn bestimmt Zeit nicht mehr bearbeitet

Hallo

Ich möchte gern von einem Verzeichnis in ein anderes Verzeichnis alle Ordner verschieben wo der Inhalt seit 30 tagen nicht mehr verändert wurde. Nur ich habe da gar keine ahnung wie man so eine BAtch datei schreibt. Kann mir da jemand helfen.
Kommentar vom Moderator Biber am Nov 05, 2009 um 15:58:55 Uhr
Kommentar von Moderator Biber am 05.11.2009 um 16.58.55 Uhr
Ich ringe seit Stunden mit mir, ob ich diese SMS-Frage nicht doch lieber schreddern sollte...
Gut, dass Geduld mein zweiter Vorname ist. Hat sich ja zum Guten gewendet.

Content-Key: 128697

Url: https://administrator.de/contentid/128697

Printed on: April 24, 2024 at 03:04 o'clock

Member: Iwan
Iwan Nov 05, 2009 at 10:02:23 (UTC)
Goto Top
hallo zurück,

ein Frage definiert sich zu einem durch den Aufbau und zum anderen durch das abschliessende Satzzeichen (hier ein ?)
aber das nur mal am Rande....

um welches Betriebssystem handelt es sich? wird die Batch lokal ausgeführt oder auf einem Netzlaufwerk?
Member: Weider1978
Weider1978 Nov 05, 2009 at 10:09:26 (UTC)
Goto Top
Danke für die schnelle Antwort.
Die Batch soll lokal ausgeführt werden und unter XP.
Member: TsukiSan
TsukiSan Nov 05, 2009 at 13:51:13 (UTC)
Goto Top
hallo Weider1978,

falls es vbs sein darf:
so kopiert man einen ganzen Ordner in vbs:
Const FOF_CREATEPROGRESSDLG = &H0&

ParentFolder = "C:\OriginalOrdner"   
Set objShell = CreateObject("Shell.Application")  
Set objFolder = objShell.NameSpace(ParentFolder) 
objFolder.CopyHere "C:\BackupOrdner", FOF_CREATEPROGRESSDLG  

und so kann man Eigesnschaften einer Datei abfragen:
Set objFSO = CreateObject("Scripting.FileSystemObject")  
Set objFile = objFSO.GetFile("c:\OriginalOrdner\MeineDatei.txt")  

Wscript.Echo "Date created: " & objFile.DateCreated  
Wscript.Echo "Date last accessed: " & objFile.DateLastAccessed  
Wscript.Echo "Date last modified: " & objFile.DateLastModified  
Wscript.Echo "Drive: " & objFile.Drive  
Wscript.Echo "Name: " & objFile.Name  
Wscript.Echo "Parent folder: " & objFile.ParentFolder  
Wscript.Echo "Path: " & objFile.Path  
Wscript.Echo "Short name: " & objFile.ShortName  
Wscript.Echo "Short path: " & objFile.ShortPath  
Wscript.Echo "Size: " & objFile.Size  
Wscript.Echo "Type: " & objFile.Type  

Das ganze nur mit dem aktuellen Datum und dem letzten Aenderungsdatum der Datei vergleichen und entsprechende Reaktion ausloesen.

Gruss
Tsuki
Member: Weider1978
Weider1978 Nov 06, 2009 at 08:07:54 (UTC)
Goto Top
Moin
Das ist schon mla in Anfang Danke.

Ich habe es jetzt wie folgt geschrieben

 
<job id="main">  
	<script language="VBScript">  
		WScript.Echo "VBScript"  
		Const FOF_CREATEPROGRESSDLG = &H0& 

        Dim intTage            
        Dim strOrdner          
     
        Set objFSO = CreateObject("Scripting.FileSystemObject")  
        strOrdner = "C:\Test1"  
        intTage = 0

        Set objOrdner = objFSO.GetFolder(strOrdner)
        For Each objDatei In objOrdner.Files
        WScript.Echo objDatei.DateLastModified, Now
            If DateDiff("d", objDatei.DateLastModified, Now) >= intTage Then  
                Set objShell = CreateObject("Shell.Application")    
		        Set objFolder = objShell.NameSpace(strOrdner) 
		        objFolder.CopyHere "C:\Test2", FOF_CREATEPROGRESSDLG   
'                objDatei.Delete          
            End If
        Next
	</script>
</job>

es funktioniert soweit das er die Dateien die das alter haben kopiert und löscht. Nur das Problem was ich nun habe das er halt nur Dateien kontrolliert und verschiebt und Unterordner komplett auslässt.
Member: Weider1978
Weider1978 Nov 06, 2009 at 08:34:19 (UTC)
Goto Top
Fehler gefunden.

der Fehler lag in der For Each
bei mir stand objOrdner.Files richtig wäre aber objOrdner.Subfolders
Member: Weider1978
Weider1978 Nov 06, 2009 at 13:52:45 (UTC)
Goto Top
also das lief auch noch nicht wie es sollte habe aber jetzt die richtige Lösung gefunden

<job id=\"main\">  
	<script language=\"VBScript\">  
		Const FOF_CREATEPROGRESSDLG = &H0& 

        Dim intTage            
        Dim strOrdner         
        Dim strOrdnerNeu 
     
        Set objFSO = CreateObject(\"Scripting.FileSystemObject\")  
        strOrdner = \"C:\\Test1\"      \'Ausgangsordner  
        strOrdnerNeu = \"C:\\Test2\"   \'Zielordner  
        intTage = 10                 \'Zeitraum  

        Set objOrdner = objFSO.GetFolder(strOrdner)
        For Each objDatei In objOrdner.Subfolders
            If DateDiff(\"d\", objDatei.DateLastModified, Now) >= intTage Then  
                objFSO.CopyFolder objDatei , strOrdnerNeu + \"\\\"+ objDatei.Name  
                objDatei.Delete        
            End If
        Next
	</script>
</job>