Jump to content

imebro

Members
  • Gesamte Inhalte

    40
  • Registriert seit

  • Letzter Besuch

Letzte Besucher des Profils

363 Profilaufrufe

Fortschritt von imebro

Contributor

Contributor (5/14)

  • Engagiert
  • Erste Antwort
  • Erster eigener Beitrag
  • Eine Woche dabei
  • Einen Monat dabei

Neueste Abzeichen

2

Reputation in der Community

  1. Danke Dir... Es dauert überhaupt nicht lange, das auszuprobieren. Habe es längst getan, aber es funktioniert nicht, wenn ich die Optionen als Variable angebe. Gibt´s vielleicht nen Tipp hierzu? Grüße, imebro
  2. Aber 2 interessante Fragen hätte ich noch: 1) Im Internet steht in vielen Berichten, dass man bei den Variablen neben "set" keine Anführungsstriche im Pfad angeben soll. Diese soll man dann erst im eigentlichen Robocopy-Befehl angeben (z.B. --> "%Quelle%". Ich habe es jedoch so umgesetzt, dass ich oben bei "set" die Anführungsstriche gesetzt habe und unten im eigentlichen Befehlscode nicht ( also --> %Quelle%). Offenbar funktioniert Beides. Gibt es dennoch einen Unterschied oder ist es wirklich egal, wie man es macht? 2) Kann ich die Optionen auch als Variable mit "set" angeben? Z.B. so --> Set Optionen="/E /MOVE /COPY:DAT /DCOPY:T /XD /MT:12 /R:1 /W:1 /TEE" Dann ist der eigentliche Befehlscode später übersichtlicher... Grüße, imebro
  3. Sorry, aber doch, ich habe das Konzept verstanden Habe das Problem nämlich schon gelöst. Ich habe ein Powershell-Script erstellt, mit dem ich die 3 Daten (Eigenschaften) ändern kann. Damit habe ich einer Datei folgende Daten gegeben: - Erstellt: 1. Mai 2010 - Geändert: 5. Januar 2012 - Letzter Zugriff: 14. August 2018 Normalerweise würde diese Datei gelöscht, da vor dem 1.01.2012 erstellt. Aber da sie am 5.1.2012 verändert wurde, dürfte sie NICHT gelöscht werden, da Stichtag ja der 1.01.2012 ist. Dann habe ich mein Robocopy-Script nochmal durchlaufen lassen... und siehe da... die Datei wurde korrekter Weise NICHT gelöscht Also dürfte mein Script jetzt korrekt sein mit "/minage" und den anderen Einstellungen. Grüße, imebro
  4. Also... scheint, als ob es funktioniert hat. Jedenfalls wurden Dateien tatsächlich verschoben und das Verzeichnis, welches nicht angerührt werden sollte, ist auch unverändert. Nur... so ganz sicher bin ich mir dennoch nicht, ob jetzt wirklich nur die Dateien verschoben wurde, die vor dem 1.01.2012 tatsächlich VERÄNDERT worden sind und nicht auch solche, die vor diesem Datum ERSTELLT wurden. Vielleicht kann ich das ja über die Datei-Eigenschaften herausfinden... nur ist das ja ein Lotteriespiel, da ich ja nicht weiß, welche Dateien ich anschauen soll Ich müßte im Idealfall dann eine Datei finden, die z.B. am 10.05.2010 erstellt und am 2.01.2012 geändert wurde. Wenn diese dann NICHT verschoben wurde, läuft alles richtig (da ja nach dem 1.01.2012 geändert). Dazu müßte ich jedoch sämtliche Dateien über die Eigenschaften prüfen, was kaum möglich ist. Grüße, imebro
  5. Habe es mit "/minage" versucht und es hat sich was getan. Muss jetzt nur noch kontrollieren, ob auch das Richtige getan wurde Grüße, imebro
  6. Oh man, ich komme mir hier vor, wie in der Schule Wenn ich das wüßte, würde ich ja nicht fragen... Ich habe schon seit gestern alle möglichen Optionen über Robocopy im Web gesucht und eben nicht das gefunden, was mir hier weiterhilft. Z.B. gibt es noch die Optionen "/minage" und "maxage". Aber die können ja nicht die Lösung sein, da hierbei das minimale, bzw. maximale Dateialter angegeben wird - also um Dateien auszuschließen, die älter, bzw. neuer als n Tage oder Datum sind. Älter als bezieht sich doch sicher auf das Erstellungsdatum der Datei... oder etwa nicht? Also bleibt im Grunde nur "/minlad" od. "maxlad". Aber wenn - wie Du geschrieben hast - das auch nicht die richtige Option ist, dann weiß ich es auch nicht. Eine weitere passende Option habe ich bisher nicht gefunden. Die Optionen "/COPY:DAT" sowie "/DCOPY:T" habe ich ja bereits in meinem Code eingesetzt. Grüße, imebro
  7. Wenn Du wüßtest, wie lange ich schon dabei bin, meine Lieblingssuchmaschine zu bemühen. Ich denke, dass die Datei jetzt grds. funktioniert. Ich musste nur bei der Angabe der Dateien noch etwas Weiteres verändern. Nämlich: Set Dateien="*.bak*" "*.doc*" "*.dot*" "*.wbk*" "*.xls*" Jede einzelne Angabe muss wohl in Anführungsstriche gesetzt werden. Übrigens habe ich das herausgefunden, indem ich den Auftrag mit YARCGUI erstellt habe. Wie Du siehst, habe ich auch das bereits versucht. Das Ergebnis der LOG-Datei zeigt aber, dass es noch nicht funktioniert. Es wurde auch wieder lediglich ein einziges leeres Verzeichnis nach "Test3" kopiert. Hier mal die LOG: ------------------------------------------------------------------------------- ROBOCOPY :: Robustes Dateikopieren für Windows ------------------------------------------------------------------------------- Gestartet: Mittwoch, 16. Februar 2022 12:14:04 Quelle : \\dasfile2\daten\Test\ Ziel : \\dasfile2\daten\Test3\ Dateien : *.bak* *.doc* *.dot* *.wbk* *.xls* Ausgeschl. Verzeichnisse: \\dasfile2\daten\Test\U1\UU1 Optionen: /TEE /S /E /DCOPY:T /COPY:DAT /MOVE /MINLAD:20120101 /R:1 /W:1 ------------------------------------------------------------------------------ 46 \\dasfile2\daten\Test\ Neues Verz. 3 \\dasfile2\daten\Test\U1\ ------------------------------------------------------------------------------ Insgesamt KopiertÜbersprungenKeine Übereinstimmung FEHLER Extras Verzeich.: 3 1 2 0 0 0 Dateien: 49 0 49 0 0 0 Bytes: 5.53 m 0 5.53 m 0 0 0 Zeiten: 0:00:00 0:00:00 0:00:00 0:00:00 Beendet: Mittwoch, 16. Februar 2022 12:14:04 Wie man sieht, wurde nichts kopiert. Ich bin sicher, dass es irgendwie mit dieser "/minlad" Angabe zu tun hat. Aber was / wie / wo soll ich da herum probieren? In den Datei-Eigenschaften steht lediglich bei "Geändert:" das Datum, welches ich ansprechen möchte. Dort steht z.B. "7. August 2003". Bei "Erstellt:" und bei "Letzter Zugriff:" steht jeweils der 7. Februar 2022. Dieses Datum darf natürlich im Code NICHT abgefragt werden. Was kann ich denn anders eintragen, um zu erreichen, dass ich im Code das ÄNDERUNGSDATUM anspreche, damit alle Dateien, die vor dem 1.01.2012 nicht mehr verändert wurden, verschoben werden? Grüße, imebro
  8. OK und danke für die Hinweise. Habe die Kommata jetzt entfernt. Was muss ich denn - statt "/minlad" angeben, damit der Zeitpunkt der letzten Änderung berücksichtigt wird? Grüße, imebro
  9. Hallo nochmal, so - endlich habe ich mal Zeit, um die Datei wirklich zu testen. Es sollen ja alle Excel-/Word Dokumente verschoben werden, die vor dem 1.01.2012 nicht mehr verändert wurden. Dazu habe ich eine Testumgebung erstellt mit den Verzeichnissen "Test\U1\UU1" und "Test3" Dann habe ich verschiedene Word- u. Excel-Dokumente in die Verzeichnisse kopiert, wobei manche älter sind als 1.01.2012 und manche neuer. Nach Ausführen der Batchdatei befand sich im Verzeichnis "Test3" jedoch lediglich das Verzeichnis "U1", welches jedoch vollkommen leer ist. Wieso wurden keine Dateien in die Verzeichnisse verschoben? Hier mal der aktuelle Code, mit dem ich es eben versucht hatte: Set Quelle="\\dasfile2\daten\Test" Set Ziel="\\dasfile2\daten\Test3" Set Dateien="*.xls*, *.doc*, *.wbk*, *.bak*, *.dot*" Set Ausschluss="\\dasfile2\daten\Test\U1\UU1" Set Log="\\dasfile2\daten\Test3\LOG.txt" robocopy.exe %Quelle% %Ziel% %Dateien% /E /MOVE /XD %Ausschluss% /minlad:20120101 /R:1 /W:1 /TEE /LOG+:%Log% Dem Code nach hätten eine Menge Dateien ins Verzeichnis "Test3" verschoben werden müssen. Das Unterverzeichnis "Test1\U1\UU1" hätte so erhalten bleiben müssen, wie es war (siehe "Ausschluss"). Wo liegt mein Fehler? Danke und schöne Grüße, imebro
  10. Hallo nochmal, ich möchte Euch jetzt wenigstens auch mal mein Ergebnis zeigen, welches als Testlauf (/L) mit Robocopy schon gut funktioniert hat. Die zu löschenden Dateien werden mit Robocopy nicht gelöscht, sondern zunächst einfach mal in ein anderes Verzeichnis verschoben. Dieses kann dann nochmal durchgeschaut werden... und anschließend kann das komplette Verzeichnis gelöscht werden und im orig. Verzeichnis verbleiben nur die Dateien, die dort auch gewünscht sind. Über "minlad:20150101" (Minimales Datum des letztes Zugriffs) werden Dateien ausgeschlossen, die seit dem 1.01.2015 verwendet wurden. Da war ich mir noch nicht so recht sicher, ob das für mein Vorhaben so korrekt ist. Es sollte ursprünglich ja so sein, dass alle Dateien, die zum letzten Mal vor dem Datum verwendet/verändert wurden, gelöscht werden sollen. Das muss man halt auf "minlad" umbrechen... Vielleicht könnt Ihr ja da nochmal helfen. Hier mein Code: @ echo off Set Quelle="\\dasfile2\daten\Test" Set Ziel="\\dasfile2\daten\Test3" Set Dateien="*.xls*, *.doc*, *.wbk*, *.bak*, *.dot*" Set Ausschluss="\\dasfile2\daten\Test\U1\UU1" Set Log="\\dasfile2\daten\Test3\LOG.txt" mkdir \\dasfile2\daten\Test3 robocopy.exe %Quelle% %Ziel% %Dateien% /E /MOVE /XD %Ausschluss% /minlad:20150101 /L /R:1 /W:1 /LOG+:%Log% Falls Ihr noch Verbesserungsvorschläge habt - gerne! Ansonsten werde ich den Zusatz "/L" entfernen und das Script mal durchlaufen lassen (sind ja zunächst eh mal nur Testverzeichnisse). Grüße, imebro
  11. OK... Habe es jetzt mal mit Robocopy versucht, womit ich mich etwas besser auskenne, indem ich zunächst die gefundenen Dateien in ein anderes Verzeichnis verschiebe und dieses im Anschluss lösche (mit einer weiteren Batch). Hier mal der Code, der die Dateien verschieben soll: mkdir S:\Test3 robocopy.exe S:\Test\*.xls* S:\Test3 /E /MOVE /maxlad:20210101 /R:1 /W:1 /LOG+:S\Test3\LOG.txt robocopy.exe S:\Test\*.doc* S:\Test3 /E /MOVE /maxlad:20210101 /R:1 /W:1 /LOG+:S\Test3\LOG.txt robocopy.exe S:\Test\*.wbk* S:\Test3 /E /MOVE /maxlad:20210101 /R:1 /W:1 /LOG+:S\Test3\LOG.txt robocopy.exe S:\Test\*.bak* S:\Test3 /E /MOVE /maxlad:20210101 /R:1 /W:1 /LOG+:S\Test3\LOG.txt robocopy.exe S:\Test\*.dot* S:\Test3 /E /MOVE /maxlad:20210101 /R:1 /W:1 /LOG+:S\Test3\LOG.txt Leider tut sich auch hier nichts. Eigentlich meint "/maxlad:20210101" doch alle Dateien, auf die am letzten Mal am 1.01.2021 zugegriffen wurde... oder nicht? So habe ich es jedenfalls recherchiert. Wenn ich diese Batch ausführe, passiert nichts. Grüße, imebro
  12. Hallo und danke nochmal... Natürlich hast Du Recht, aber das hier hatten wir ja schon mal am Anfang (oder Mitte) dieses Threads. Ich habe diese Frage hier wegen einem akuten Problem gestellt. Um jetzt zuerst mal PS zu lernen, habe ich nicht die Zeit... ich muss ja das Problem irgendwie lösen. Daher hatte ich einfach gehofft, dass mir hier jemand einfach mit einem Code weiterhelfen könnte, mit dem ich das hinbekomme. Mir ist egal, ob es PowerShell, Batch oder Robocopy etc. ist... Ich bin kein IT-ler, sondern mache das hier "so gut es irgendwie geht". Hatte ich alles schon vor mehreren Seiten erklärt Falls Du mir also mit einem Code weiterhelfen magst.......... sehr gerne Grüße, imebro
  13. Danke Dir... Keine Ahnung, ob das mit dem Get-Date zu tun hat. Ich fand nur merkwürdig, dass nur die Dateien aufgeführt wurden, die am Ende NICHT gelöscht wurden. Habe übrigens bei einem weiteren Versuch aus der 2. Zeile das "-Exclude $exclude" wieder entfernt. Aber auch da erhalte ich genau das gleiche Ergebnis mit diesem Zusatz Cmdlet Remove-Item an der Befehlspipelineposition 1 Geben Sie Werte für die folgenden Parameter an: Path[0]: Irgendwie kapiere ich das hier überhaupt nicht. Aber ich bin ja tatsächlich auch ein absoluter Laie, was PS angeht. Bisher habe ich immer eher was mit Batchdateien gemacht. Fand das viel einfacher und verständlicher Aber da habe ich keine Möglichkeit, Dateien "älter als" zu filtern... jedenfalls nicht so, dass ich sie am Ende auch löschen könnte. Grüße, imebro
  14. OK... 1) Ich habe jetzt einen erfolgreichen Test gemacht mit dem Code (siehe erste Zeile) und dem Ergebnis nach "ausführen": $folder = '\\dasfile2\daten\Test\*' $include = '*.doc?', '*.dot?', '*.wbk?', '*.bak?', '*.xls?' $exclude = 'U1\\UU1' $date = Get-Date '01.01.2021' # Nur Word-/Excel Dokumente mit Änderungsdatum älter als $date suchen Get-ChildItem $folder -File -Include $include -Exclude $exclude -Recurse --------------------------------------- Ergbnis: Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 25.11.2021 11:31 21470 Abl_2.dotx -a---- 21.01.2022 10:04 33625 Budget 2021_A bearbeitete 202103.xlsx -a---- 25.11.2021 11:29 19128 Ein_Bst.dotx -a---- 10.01.2022 16:12 206481 JB 2020_Ant_Mastercopy_20210505.xlsx -a---- 07.12.2021 13:55 734122 JB 2020_Ant_Mastercopy_20210413.xlsx -a---- 29.12.2021 13:47 27496 P-Mittelabruf_Projekt_20211202.xlsx -a---- 06.12.2021 13:20 18487 P-Mittelabruf_Projek_20211206_final.xlsx -a---- 13.01.2022 15:38 13043 Rundmail_Verteiler.xlsx -a---- 24.01.2022 16:03 8583 Rück für 2022.xlsx -a---- 15.12.2021 11:03 27482 W_hilfe_Rund 2020_201001.xlsx Hier werden im Ergebnis nur die Dateien aufgeführt, die NICHT älter sind, als 1.1.21. Und... wie man sieht, habe ich die folder-Angabe geändert von S:\* zu \\dasfile2\daten\Test\* Vielleicht hat auch das etwas bewirkt, den UNC-Pfad anzugeben. 2) Hänge ich die zweite Codezeile nun im 2. Schritt mit an, bleibt das Ergebnis genau gleich, wie oben auch!! 3) Hänge ich jetzt die 3. Codezeile im 3. Schritt an, erscheint nochmal das gleiche Ergebnis, jedoch mit dem Zusatz: Cmdlet Remove-Item an der Befehlspipelineposition 1 Geben Sie Werte für die folgenden Parameter an: Path[0]: Wichtig wäre noch zu erwähnen, dass ich die senkrechten Striche (Pipes??) weggelassen habe. Setze ich diese ein, passiert überhaupt nichts!! Übrigens passiert genau das Gleiche, wenn ich den Zusatz "-Exclude $exclude" aus der GetChild-Item Zeile wieder entferne. Hier der gesamte Code für Schritt 3: $folder = '\\dasfile2\daten\Test\*' $include = '*.doc?', '*.dot?', '*.wbk?', '*.bak?', '*.xls?' $exclude = 'U1\\UU1' $date = Get-Date '01.01.2021' # Nur Word-/Excel Dokumente mit Änderungsdatum älter als $date suchen Get-ChildItem $folder -File -Include $include -Exclude $exclude -Recurse Where-Object { ($_.LastWriteTime -lt $date) -and (($_.Fullname -notmatch $exclude)) } Remove-Item -Force -WhatIf Grüße, imebro
×
×
  • Neu erstellen...