none
Neuestes Verzeichnis öffnen RRS feed

  • Frage

  • Hallo, ich habe ein Verzeichnis in dem sich Unterverzeichnisse befinden. Ich bräuchte ein Skript, welches bei Ausführung immer aus dem neuesten Verzeichnis zwei Dateien in ein anderes Verzeichnis kopiert! Hat irgendjemand eine Idee, wie dies gehen könnte?
    Donnerstag, 10. Februar 2011 13:13

Antworten

  • Den aktuellsten (zuletzt geschriebenen) Ordner erhältst du hiermit:

    $folder = dir c:\ | Where-Object { $_.PSIsContainer } | sort lastwritetime 
    $folder = $folder[-1].fullname
    

    Zum Verständnis: Zuerst wird das Directory gelesen mit dir (nicht das DOS-dir, sondern nur ein Alias für den Powershellbefehl get-childitem ), dann wird gefiltert nach Verzeichnissen (PSIsContainer) und sortiert nach dem dem letzten Zugriffsdatum.
    Die entstehende Liste ist von alt nach neu sortiert, also möchten wir den vollen Pfadnamen (.FULLNAME ) des letzten Eintrages ([-1] ).

    $folder beinhaltet dann den vollen Pfadnamen zu dem Verzeichnis, du kannst diese variable dann also direkt im Kopierbefehl verwenden. Wie's weitergeht hängt davon ab welche Dateien du kopieren möchtest.

    Grüße, Denniver

     

    Donnerstag, 10. Februar 2011 13:31
    Moderator
  • Das sieht dann so aus:

    $zielpfad = "\\myserver\zielordner"
    
    $folder = dir c:\ | Where-Object { $_.PSIsContainer } | sort lastwritetime 
    $folder = $folder[-1].fullname
    
    copy-item "$folder\full.zip" "$zielpfad\vdefhub.zip"
    

    Grüße, Denniver

    Donnerstag, 10. Februar 2011 13:47
    Moderator

Alle Antworten

  • Den aktuellsten (zuletzt geschriebenen) Ordner erhältst du hiermit:

    $folder = dir c:\ | Where-Object { $_.PSIsContainer } | sort lastwritetime 
    $folder = $folder[-1].fullname
    

    Zum Verständnis: Zuerst wird das Directory gelesen mit dir (nicht das DOS-dir, sondern nur ein Alias für den Powershellbefehl get-childitem ), dann wird gefiltert nach Verzeichnissen (PSIsContainer) und sortiert nach dem dem letzten Zugriffsdatum.
    Die entstehende Liste ist von alt nach neu sortiert, also möchten wir den vollen Pfadnamen (.FULLNAME ) des letzten Eintrages ([-1] ).

    $folder beinhaltet dann den vollen Pfadnamen zu dem Verzeichnis, du kannst diese variable dann also direkt im Kopierbefehl verwenden. Wie's weitergeht hängt davon ab welche Dateien du kopieren möchtest.

    Grüße, Denniver

     

    Donnerstag, 10. Februar 2011 13:31
    Moderator
  • Hi Denniver,

    coole Sache, danke! Die Datei heißt im Quellverzeichnis full.zip und soll im Zielverzeichnis vdefhub.zip heißen. Das Zielverzeichnis liegt auf einem anderen Server - aber das sollte ja kein Problem darstellen (UNC od. Laufwerksbuchstabe einbinden)

    Wie bau ich mir dann so ein Script zusammen, habe noch nie ein Powershell-Script erstellt...

    Grüße

    Julian.

     

    Donnerstag, 10. Februar 2011 13:36
  • Das sieht dann so aus:

    $zielpfad = "\\myserver\zielordner"
    
    $folder = dir c:\ | Where-Object { $_.PSIsContainer } | sort lastwritetime 
    $folder = $folder[-1].fullname
    
    copy-item "$folder\full.zip" "$zielpfad\vdefhub.zip"
    

    Grüße, Denniver

    Donnerstag, 10. Februar 2011 13:47
    Moderator
  • Hi Denniver,

    sau cool! Vielen Dank, das probier ich nachher gleich aus!!

    Julian.

    Donnerstag, 10. Februar 2011 13:53