Pytanie: Czy program Powershell może automatycznie utworzyć osobny skompresowany plik archiwum dla każdego obiektu znalezionego w katalogu?
Tło:
- Katalog zawierający kilkaset plików (różne typy plików)
- Muszę utworzyć spakowane archiwum dla każdego z nich.
Przepływ pracy koncepcji:
- Skrypt Powershell jest skierowany do katalogu
- Program Powershell odkrywa kilka plików (różne rozszerzenia)
- Program Powershell automatycznie kompresuje plik „Widget.CFG” do pliku .ZIP
- Proces powtarza się dla każdego innego obiektu znalezionego w tym samym katalogu
Środowisko:
- System operacyjny Windows 7/64 Bit
- Wersja PowerShell 5 (Ważna: 5 Mniejsza: 1 Kompilacja: 15363 Wersja: 786)
czy to możliwe?
Skrypt, który wymyśliłem (poniżej), nie generuje żadnych wyników i jestem zaskoczony, dlaczego.
Co mam do tej pory:
$Path = "C:\ziptest"
function Compress-ChildItem {
[CmdletBinding()]
param(
[Parameter(Position = 0, Mandatory, ValueFromPipeline)]
[ValidateNotNull()]
[System.IO.DirectoryInfo[]]
$Path
)
process {
Get-ChildItem -File $Path | ForEach-Object {
$NewName = "{0}-{1}.zip" -f $_.BaseName, ($_.Extension -replace '.')
$CompressionParams = @{
DestinationPath = Join-Path $Path -ChildPath $NewName
Path = $_.FullName
}
Compress-Archive @CompressionParams
}
}
}
Compress-Archive
cmdlet.