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

Compress-Archive手动运行正常,在.bat文件中无法执行的解决求助

解决Bat脚本中无法执行Compress-Archive的问题

Compress-Archive是PowerShell的内置cmdlet,而.bat脚本默认由cmd.exe执行,cmd环境不识别PowerShell专属命令,这就是报错的核心原因。你在命令行能正常执行,是因为当时处于PowerShell环境中,分号分隔的是PowerShell命令序列。

方案一:在Bat脚本中调用PowerShell执行命令

修改Bat脚本中的压缩命令行,通过powershell.exe调用PowerShell环境执行Compress-Archive:

REM Takes DATE as input param
if "%1"=="" (
  echo Provide DATE as an argument ex. 20230425
  exit /b 1
) else (
  set DATA_DATE=%1
  echo Accepted.
)

REM Zip all data via PowerShell
powershell.exe -Command "Compress-Archive .\data\%DATA_DATE%\p* -Force test.zip"

注意:这里把参数-f换成了完整的-Force,PowerShell中两种写法都支持,但完整参数名可读性更好;如果你的路径包含空格,需要给路径加上引号,比如".\data\%DATA_DATE%\p*"。

方案二:将脚本改为PowerShell脚本(更推荐)

既然你已经在使用PowerShell命令,直接将.bat转为.ps1脚本会更适配:

# Takes DATE as input param
param(
    [Parameter(Mandatory=$true)]
    [string]$DATA_DATE
)

Write-Host "Accepted."

# Zip all data
Compress-Archive .\data\$DATA_DATE\p* -Force test.zip

执行时在PowerShell中运行:.\collect_data.ps1 20230504,如果遇到执行策略限制,可以临时允许执行:powershell.exe -ExecutionPolicy Bypass -File .\collect_data.ps1 20230504

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 11:02:37