You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell实现解压ZIP并将内部HTML重命名为ZIP文件名

解决ZIP解压后HTML文件重命名为原ZIP文件名的问题

我来帮你梳理这个解决方案的思路,以及关键代码的作用:

你的核心需求是:解压ZIP后,把里面的HTML文件重命名为原ZIP文件的名称(不带.zip后缀),由于原程序生成的ZIP里的HTML文件名不可控,我们需要通过「临时目录中转」的方式来实现精准重命名。

最终完整脚本

#Location Of ZIP Files Defined Here
$ZipFilesPath = "C:\Test\";
#Unzip To Temp Folder Defined Here
$TempPath = "C:\Test\Temp"

#Create Our Temp File If It Doesnt Exist (Will Be Deleted Again)
If(!(test-path $TempPath)) {
    New-Item -ItemType Directory -Force -Path $TempPath
}

$Shell = New-Object -com Shell.Application
$Location = $Shell.NameSpace($TempPath)
$ZipFiles = Get-Childitem $ZipFilesPath -Recurse -Include *.ZIP
$FileCounter = 1

#Clear Initilisation Vars from Console
clear

foreach ($ZipFile in $ZipFiles) {
    #Get The Base Filename without the Filepath
    $ZipFileActualName = [io.path]::GetFileNameWithoutExtension($ZipFile.FullName)
    write-host "File: " $ZipFileActualName

    $ZipFolder = $Shell.NameSpace($ZipFile.fullname)
    $Location.Copyhere($ZipFolder.items(), 1040)

    # --- 新增的重命名核心逻辑 ---
    # 获取临时目录里的所有HTML文件
    $HtmlFiles = Get-ChildItem $TempPath *.html
    # 将每个HTML文件重命名为原ZIP的名称,并移动到目标路径
    $HtmlFiles |% {Move-Item $_.Fullname "$ZipFilesPath/$ZipFileActualName.html"}
    # --- 核心逻辑结束 ---

    #Move Along to Next File
    $FileCounter++
}

#Remove Our .ZIP Folders
Get-ChildItem -Path $ZipFilesPath -Include *.zip* -File -Recurse | foreach {
    $_.Delete()
}

#Remove Our Temp Folder
Remove-Item –path $TempPath –recurse

关键修改点说明

和你最初的脚本相比,主要做了这些调整:

  1. 新增临时目录:创建$TempPath作为解压中转目录,确保每次处理单个ZIP时,能精准找到当前解压出来的HTML文件,避免和其他文件冲突
  2. 修改解压目标:把原来直接解压到$ZipFilesPath改成解压到临时目录$TempPath
  3. 插入重命名逻辑:在解压完成后(Copyhere之后),加入了获取HTML文件、重命名并移动到最终目录的代码,这里用$ZipFileActualName(原ZIP的无后缀名称)作为新的HTML文件名
  4. 新增清理步骤:处理完所有ZIP后,删除原ZIP文件和临时目录,保持环境整洁

代码插入位置的说明

你最初的脚本里,解压操作是$Location.Copyhere($ZipFolder.items(), 1040),重命名的核心逻辑就需要紧跟在这一行之后,因为只有解压完成后,才能拿到需要重命名的HTML文件。

内容的提问来源于stack exchange,提问作者Soprono

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:54:24