none
-compress zip Files fortlaufend hochzählen RRS feed

  • Frage

  • Hier kommt eine Rookie-Frage: 

    Ich erhalte im Ordner \work\ jeden Tag neue Files. Diese zippe ich in den Ordner \output\  und lösche dann den Inhalt des Ordners \work\

    Daz führe folgende Befehle aus: 

    #Compress-Archive -Path C:\PowershellTest\Work\*.* -CompressionLevel optimal -DestinationPath C:\PowershellTest\Output\test2.Zip 
    #Remove-Item -Path "C:\PowershellTest\Work\*.*" 

    Nun möchte ich gerne, dass die zip Files im Target-Ordner \output\ entweder immer um eine Zahl am Ende des FileNamens hochgezählt werden.     

    \output\Test1.zip,

    \output\Test2.zip,

    \output\Test3.zip     usw... 

    oder die Datei die vom \work\ ins \output\ gezippt wird auch immer mit dem aktuellen Datum versorgt wird, sodass am Ende folgende Struktur ersichtlich ist. 

    \output\Test_06052020.zip 

    \output\Test_07052020.zip 

    \output\Test_08052020.zip     usw...    

    kann mit da jemand im Rahmen meiner vorhandenen Befehle weiterhelfen ?  


    Donnerstag, 7. Mai 2020 09:59

Antworten

  • Moin,

    das aktuelle Datum ist einfach:

    Compress-Archive -Path C:\PowershellTest\Work\*.* -CompressionLevel optimal -DestinationPath "C:\PowershellTest\Output\test$(Get-Date -Format "yyyyMMdd").Zip"

    Das mit dem Hochzählen ist so eine Sache: Du musst den Zähler irgendwie persistieren, damit der nächste Aufruf des Skriptes weiß, dass es beim Vorherigen eine 7 war und jetzt also eine 8 ansteht:

    $counterfile = "$PSScriptRoot\counter.txt"
    if (!(Test-Path $counterfile)) {
        $counter = 0
    } else {
        $counter = (Get-Content $counterfile)[0] -as [int]
        if ($null -eq $counter) { $counter = 0 }
    }
    $counter++
    Compress-Archive -Path C:\PowershellTest\Work\*.* -CompressionLevel optimal -DestinationPath "C:\PowershellTest\Output\test$($counter).Zip"
    $counter | Set-Content $counterfile -Force
    oder Du zählst die vorhandenen Dateien, aber da verzichte ich mal auf ein Beispiel...


    Evgenij Smirnov

    http://evgenij.smirnov.de

    Donnerstag, 7. Mai 2020 10:26

Alle Antworten

  • Moin,

    das aktuelle Datum ist einfach:

    Compress-Archive -Path C:\PowershellTest\Work\*.* -CompressionLevel optimal -DestinationPath "C:\PowershellTest\Output\test$(Get-Date -Format "yyyyMMdd").Zip"

    Das mit dem Hochzählen ist so eine Sache: Du musst den Zähler irgendwie persistieren, damit der nächste Aufruf des Skriptes weiß, dass es beim Vorherigen eine 7 war und jetzt also eine 8 ansteht:

    $counterfile = "$PSScriptRoot\counter.txt"
    if (!(Test-Path $counterfile)) {
        $counter = 0
    } else {
        $counter = (Get-Content $counterfile)[0] -as [int]
        if ($null -eq $counter) { $counter = 0 }
    }
    $counter++
    Compress-Archive -Path C:\PowershellTest\Work\*.* -CompressionLevel optimal -DestinationPath "C:\PowershellTest\Output\test$($counter).Zip"
    $counter | Set-Content $counterfile -Force
    oder Du zählst die vorhandenen Dateien, aber da verzichte ich mal auf ein Beispiel...


    Evgenij Smirnov

    http://evgenij.smirnov.de

    Donnerstag, 7. Mai 2020 10:26
  • Vielen Dank für die Hilfe..   Hat genau so gepasst..   :-)   
    Dienstag, 26. Mai 2020 05:50