Benutzer mit den meisten Antworten
-compress zip Files fortlaufend hochzählen

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 ?
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
- Als Antwort vorgeschlagen BOfH-666 Donnerstag, 7. Mai 2020 11:19
- Als Antwort markiert Denniver ReiningMVP, Moderator Montag, 25. Mai 2020 19:27
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
- Als Antwort vorgeschlagen BOfH-666 Donnerstag, 7. Mai 2020 11:19
- Als Antwort markiert Denniver ReiningMVP, Moderator Montag, 25. Mai 2020 19:27