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

如何用PowerShell解压%TEMP%目录的压缩包并访问内部exe文件

PowerShell 解压临时目录压缩包并运行内部EXE实现方案

前置说明

Windows 10 1709 及以上版本、PowerShell 5.1 及更高版本自带原生解压 cmdlet Expand-Archive,无需引入第三方工具即可直接使用。如果运行环境版本更低,可替换为下文给出的兼容版解压逻辑。

完整实现步骤

  • 第一步:定义基础变量,替换为你实际的压缩包名称、EXE 对应路径
# $env:TEMP 对应系统 %TEMP% 环境变量,拼接为压缩包完整路径
$zipPath = Join-Path $env:TEMP "你的压缩包名称.zip"
# 自定义解压目标路径,示例为在TEMP目录下新建专属解压文件夹
$extractPath = Join-Path $env:TEMP "CustomExtractDir"
# 如果你已知压缩包内EXE的相对路径,可提前定义完整路径
$exeRelativePath = "子目录名\目标程序.exe"
$exeFullPath = Join-Path $extractPath $exeRelativePath
  • 第二步:执行解压操作
# 解压目标目录不存在则自动创建
if (-not (Test-Path $extractPath)) {
    New-Item -ItemType Directory -Path $extractPath | Out-Null
}
# 执行解压,-Force 参数会自动覆盖已存在的同名文件,不需要可删除
Expand-Archive -Path $zipPath -DestinationPath $extractPath -Force
  • 第三步:定位并运行EXE
    如果你明确知道EXE在压缩包内的相对路径,直接调用即可:
# 校验EXE文件是否存在
if (Test-Path $exeFullPath) {
    # 运行EXE,需要传启动参数可加 -ArgumentList "参数1","参数2"
    # -Wait 参数会等待EXE运行结束再执行后续脚本,不需要可删除
    Start-Process -FilePath $exeFullPath -Wait
}
else {
    Write-Error "未找到目标可执行文件:$exeFullPath"
}

如果你不清楚压缩包内EXE的具体路径,可使用搜索逻辑自动匹配:

# 递归搜索解压目录下所有EXE文件,取第一个匹配结果,可修改Filter过滤
$foundExe = Get-ChildItem -Path $extractPath -Filter "*.exe" -Recurse | Select-Object -First 1 -ExpandProperty FullName
if ($foundExe) {
    Start-Process -FilePath $foundExe -Wait
}
else {
    Write-Error "解压目录下未找到任何EXE可执行文件"
}

低版本系统兼容方案

如果运行环境不支持Expand-Archive,可替换解压逻辑为调用系统原生COM对象实现,兼容Windows 7及以上系统:

$shell = New-Object -ComObject Shell.Application
$zipFile = $shell.NameSpace((Resolve-Path $zipPath).Path)
$destination = $shell.NameSpace((Resolve-Path $extractPath).Path)
# 第二个参数16代表解压时自动覆盖已有文件
$destination.CopyHere($zipFile.Items(), 16)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 17:24:03