Я новичок в powershell и застрял в создании кода, поскольку у меня около 20 папок zip, расположенных по адресу D:\Input
. Я хочу разархивировать все папки в D:\Output
с исходным именем папки zip, но со следующим требованием, например, у меня есть папка zip, расположенная в D: \ Input с именем "ET_NM.TEST_DATA_2.ET_ID.84.C_ID.4016.Part.1.20190502.0826
", и она содержит следующее папка "1ac7b-2d62-403c-8394-5bd33cbe7
".
Поэтому, когда я разархивирую, я хочу следующую папку в D: \ Output "1ac7b-2d62-403c-8394-5bd33cbe7
". После этого сценарий переименует эту папку "1ac7b-2d62-403c-8394-5bd33cbe7
" в исходную папку zip, которая называется "ET_NM.TEST_DATA_2.ET_ID.84.C_ID.4016.Part.1.20190502.0826
". У меня к тому же шагу до 20 папок zip, поэтому я думаю, что цикл будет предпочтительнее. Может кто-нибудь, пожалуйста, помогите мне в этом сценарии
$ZipFilesPath = "D:\Input"
$UnzipPath = "D:\Output"
$Shell = New-Object -com Shell.Application
$Location = $Shell.NameSpace($UnzipPath)
$ZipFiles = Get-Childitem $ZipFilesPath -Recurse -Include *.ZIP
$progress = 1
foreach ($ZipFile in $ZipFiles) {
Write-Progress -Activity "Unzipping to $($UnzipPath)" -PercentComplete (($progress / ($ZipFiles.Count + 1)) * 100) -CurrentOperation $ZipFile.FullName -Status "File $($Progress) of $($ZipFiles.Count)"
$ZipFolder = $Shell.NameSpace($ZipFile.fullname)
$Location.Copyhere($ZipFolder.items(), 1040)
$progress++
$a= $ZipFile.Name
Write-Host $a
}