使用PowerShell结合WinRAR命令行单独归档文件的技术问题
PowerShell调用WinRAR批量压缩单个文件并删除原文件(最高压缩级别)
问题解决要点
你的脚本存在三个核心问题:变量名不匹配、未逐个处理文件、缺少压缩级别和删源文件的参数。以下是修正后的完整实现:
# 定义WinRAR路径 $winRarPath = "C:\Program Files\WinRAR\WinRAR.exe" # 目标文件夹 $targetDir = "N:\Download" # 遍历目标文件夹下所有txt文件 Get-ChildItem -Path $targetDir -Filter "*.txt" | ForEach-Object { # 构建对应rar文件的路径(和原文件同名,后缀替换为rar) $rarFilePath = Join-Path $targetDir "$($_.BaseName).rar" # 调用WinRAR执行压缩:最高级别+压缩后删源文件 & $winRarPath a -m5 -d "$rarFilePath" $_.FullName }
关键参数说明
a:WinRAR的核心命令,用于添加文件到归档-m5:指定最高压缩级别(WinRAR压缩级别从-m0到-m5,-m5对应"最好"压缩模式,压缩率最高但耗时最长)-d:压缩完成后自动删除源文本文件- 每个文件单独生成对应rar:通过
ForEach-Object循环遍历每个txt文件,为每个文件生成独立的归档文件
验证说明
执行脚本前建议先备份测试文件:
- 确保WinRAR路径正确(若你的WinRAR安装路径不同,需修改
$winRarPath) - 脚本会遍历
N:\Download下所有txt文件,逐个压缩为同名rar,压缩完成后自动删除原txt文件
内容的提问来源于stack exchange,提问作者Shahpari
相关产品推荐
相关产品推荐

