Mam wiele plików zip.

Nazywają się folderem (1) .zip, folder (2) .zip, folder (3) .zip. Korzystając z PowerShell, kiedy próbuję rozpakować je w wyjątkowych folderach za pomocą tego ...

Get-ChildItem 'c:\users\name\downloads' -Filter *.zip | Expand-Archive -DestinationPath 'c:\users\name\downloads'  -Force

Dostaję wszystkie pliki w jednym folderze o nazwie "folder". Jak mogę uzyskać foldery ZIP do rozpakowania do oddzielnych folderów?

Pytanie bonusowe, czy istnieje sposób, jako część tego procesu, aby zmienić nazwę każdego folderu, ponieważ wychodzi, więc folder (1) .zip staje się Nazwa - tutaj , folder (2) .zip staje się Inne nazwiska - tutaj itp.

Dzięki!

0
deg 26 październik 2020, 22:13

1 odpowiedź

Najlepsza odpowiedź

Ponieważ określasz tylko jedną ścieżkę docelową, wszystkie zostaną wyodrębnione do c:\users\name\downloads. Przypuszczam, że archiwa ZIP każda zawiera folder o nazwie "folder", więc wszystkie zawartość wszystkich archiwów kończy się razem w c:\users\name\downloads\folder

Musisz określić inną ścieżkę docelową dla każdego archiwum. Nie jestem pewien, czym powinna być konwencja nazewnictwa, użyłem prostego licznika:

$counter = 0
Get-ChildItem 'c:\users\name\downloads' -Filter *.zip | foreach {
    $destination = Join-Path $_.DirectoryName ("YourName" + $counter++)
    Expand-Archive $_.FullName -DestinationPath $destination
}

Oczywiście przypuszczam, że teraz każdy z tych folderów będzie miał podfolder "folder", ale jeśli tak zbudowane są archiwa, nie ma takiej możliwości, aby to zmienić. Jeśli jesteś absolutnie na pewno, że wszystkie mają ten podfolder, możesz zrobić coś takiego:

$counter = 0
Get-ChildItem 'c:\users\name\downloads' -Filter *.zip | foreach {
    # expand to the root folder first
    Expand-Archive $_.FullName -DestinationPath $_.DirectoryName
    # now rename the extracted "folder" to whatever you like
    Rename-Item (Join-Path $_.DirectoryName "folder") -NewName ("YourName" + $counter++)
}
0
marsze 26 październik 2020, 19:34