我对Powershell还是陌生的,因为在var data = {};
data.data = { prop1: 'x', prop2: 'x' };
data.days = [ 5, 6 ];
data.days.forEach(day => {
let newData;
newData = Object.assign({}, data.data);
newData.date = day;
console.log('newData.date: ' + newData.date)
console.log(newData)
});
上有大约20个zip文件夹,所以我坚持编写代码。我想用原始名称zip文件夹解压缩D:\Input
上的所有文件夹,但是要满足以下要求,例如,我在D:\ Input上拥有名为“ D:\Output
”的zip文件夹,并且它包含以下文件夹“ ET_NM.TEST_DATA_2.ET_ID.84.C_ID.4016.Part.1.20190502.0826
”。
因此,当我解压缩时,我希望在D:\ Output“ 1ac7b-2d62-403c-8394-5bd33cbe7
”下有以下文件夹。之后,脚本会将这个文件夹“ 1ac7b-2d62-403c-8394-5bd33cbe7
”重命名为原始的zip文件夹“ 1ac7b-2d62-403c-8394-5bd33cbe7
”。我必须对20个zip文件夹执行相同的步骤,所以我认为for循环会更好。谁能帮我这个脚本
ET_NM.TEST_DATA_2.ET_ID.84.C_ID.4016.Part.1.20190502.0826
答案 0 :(得分:0)
由于尚不清楚zip文件包含的内容,因此我建议
D:\Output
中使用zip文件BaseName创建一个文件夹,然后在其中解压缩。## Q:\Test\2019\05\23\SO_56279162.ps1
$ZipFilesPath = "D:\Input" # 'A:\Input' #
$UnzipBase = "D:\Output" # 'A:\Output' #
$Shell = New-Object -com Shell.Application
$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)
$UnzipPath = Join-Path $UnzipBase $ZipFile.BaseName
New-Item $UnzipPath -ItemType Directory | Out-NUll
$Location = $Shell.NameSpace($UnzipPath)
$Location.Copyhere($ZipFolder.items(), 1040)
$progress++
}
样本树(在我的RamDrisk A:上)
> tree /F A:\
A:\
├───input
│ ET_NM.TEST_DATA_2.ET_ID.84.C_ID.4016.Part.1.20190502.0826.zip
│
└───Output
└───ET_NM.TEST_DATA_2.ET_ID.84.C_ID.4016.Part.1.20190502.0826
└───1ac7b-2d62-403c-8394-5bd33cbe7
test.txt