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

PowerShell脚本传递C:\路径报错,寻求解决方案

问题分析与解决

你的问题出在几个关键细节上:

  1. Resolve-Path返回值处理错误
    Resolve-Path返回的是PathInfo对象而非纯字符串路径,直接传给New-Item会触发"路径格式非法"的错误,必须提取对象的.Path属性获取字符串路径。

  2. 无需创建根目录C:\
    C:\作为系统根目录必然已存在,调用New-Item尝试创建它本身就会报错,这一步完全多余。

  3. WinZip解压命令缺少目标文件夹参数
    你把$outputFolder注释掉了,导致WinZip不知道解压目标位置;同时要注意WZUNZIP的参数顺序:-d后需要直接紧跟目标路径。

修改后的脚本

$sourceFolder = "C:\Temp"
$winZipExe = "C:\Program Files\WinZip\WZUNZIP.EXE"
$destinationFolder = "c:\"

# 询问用户解压密码
$password = Read-Host -Prompt "Please enter the password for the .zipx files"
$passwordCommand = "-s$password"  # 简化密码参数拼接方式

Get-ChildItem -Path $sourceFolder -Filter *.zipx | ForEach-Object {
    $zipxFile = $_.FullName
    # 提取纯字符串格式的目标路径
    $outputFolder = (Resolve-Path $destinationFolder).Path
    # 调用WinZip解压到指定路径
    & $winZipExe -e -d "$outputFolder" $passwordCommand "$zipxFile"
}

额外说明

  • 如果后续需要处理非根目录的目标路径,可以保留目录创建逻辑但增加存在性判断:
    if (-not (Test-Path $outputFolder)) {
        New-Item -ItemType Directory -Path $outputFolder -Force | Out-Null
    }
    
  • WinZip WZUNZIP 参数说明:-e 表示提取文件,-d <路径> 指定解压目标,-s<密码> 为加密文件的密码参数(注意-s和密码之间无空格)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 09:55:12