我尝试通过Powershell脚本自动执行重复性场景:
我有一个压缩( .zip)文件夹,其中包含多个文件( .XML)。
我的情况是:
C:\Users\*\Downloads
AppName.Version.zip
)的文件夹中,该文件夹将位于同一路径:C:\Users\*\Downloads
中。问题:
如何再次压缩文件夹,以便通过单击compress文件夹,我将立即看到文件(压缩文件夹>文件)而不是文件夹,然后是文件(压缩文件夹>文件)
Compress和Expand命令对的文件夹名称格式大喊大叫,因此这些命令无法正常工作。我该如何克服?
$languageString = Read-Host ...
$replaceString = '<value>' + $languageString
$file = Get-Childitem "c:\users\*\Downloads\app.version.zip" -Recurse
$originalFileName = $file.Name
$absoluteFilePath = $file.FullName
$rename-item -path $absoluteFilePath -newname translate.zip
$file = Get-Childitem "c:\users\*\Downloads\translate.zip" -Recurse
$absoluteFilePath = $file.FullName
$unzipFilePath = $absoluteFilePath.Substring(0, $absoluteFilePath.LastIndexOf('.'))
expand-archive -path $absoluteFilePath -destinationpath $unzipFilePath
$files = @(Get-Childitem "c:\users\*\Downloads\*.xml)
foreach ($file in $files)
{
(Get-Content -path $file.FullName -Raw) -replace '<value>' , $replaceString | Set-Content -Path $file.FullName
#this line makes problems...
Compress-Archive -path $unzipFilePath -Destinationpath $unzipFilePath -Force
答案 0 :(得分:0)
我通过三个步骤看到它: 1.解压缩在临时清洁的位置。 2.在那里更改文件 3.将该位置拉回。
代码将具有以下功能:
function Unzip_archive ($ArchiveFullPath, $Temp_Work_Fld) {
try {
#unzip
Add-Type -assembly 'system.io.compression.filesystem'
[io.compression.zipfile]::ExtractToDirectory($ArchiveFullPath, $Temp_Work_Fld)
}
catch {
throw "Failed to unzip the artifact"
}
Remove-Item $ArchiveFullPath -Force #only if you want to delete the archive
}
function CreateZipArchive($FolderToArchive, $ZipArchiveFullName){
$source = Get-ChildItem * -Directory | Where-Object {$_.FullName -match "$FolderToArchive"}
write-host "`nArchiving: $source ........."
Add-Type -Assembly system.IO.compression.filesystem
$compressionlevel = [System.IO.Compression.CompressionLevel]::Optimal
[io.compression.zipfile]::CreateFromDirectory($source, $ZipArchiveFullName, $compressionlevel, $true)
write-host "nDone !"
}
然后只需在临时文件夹中进行更改之前和之后调用函数