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

如何在PowerShell中通过foreach批量调用sox转换.vox文件为MP3?

批量转换.vox文件为MP3的PowerShell方案

当然可以实现!下面是完全适配你需求的具体分步方案:

1. 先获取所有.vox文件的列表

假设你已经完成了zip包的解压,现在可以用PowerShell的Get-ChildItem命令,快速遍历目标目录(包括子目录)里的所有.vox文件:

# 把这里的路径替换成你的解压后目录
$voxFiles = Get-ChildItem -Path "C:\Your\Extracted\Folder" -Filter "*.vox" -Recurse

2. 用foreach循环批量执行sox转换

接下来通过循环逐个处理每个.vox文件,动态生成输入输出路径,直接调用sox命令即可——哪怕sox习惯在cmd里运行,PowerShell也能完美兼容:

foreach ($file in $voxFiles) {
    # 生成对应的MP3输出路径:和原文件同目录,后缀替换为.mp3
    $outputFile = Join-Path -Path $file.DirectoryName -ChildPath ($file.BaseName + ".mp3")
    
    # 直接在PowerShell中调用sox(如果sox没加入系统PATH,就写完整路径比如"C:\sox\sox.exe")
    sox -t raw -r 8000 -e a-law "$($file.FullName)" "$outputFile"
    
    # 如果你确实需要强制在cmd环境下执行(比如依赖cmd的环境变量),就用下面这行替换上面的sox调用:
    # cmd /c "sox -t raw -r 8000 -e a-law `"$($file.FullName)`" `"$outputFile`""
}

几个关键细节说明

  • 路径引号:给文件路径套双引号,是为了避免路径里有空格时sox命令报错,$($file.FullName)会自动输出带完整路径的文件名
  • sox路径问题:如果系统PATH里没加sox的安装目录,一定要把命令里的sox替换成sox.exe的完整绝对路径
  • 可选错误处理:如果需要跟踪转换成功/失败的情况,可以加个简单的异常捕获:
foreach ($file in $voxFiles) {
    $outputFile = Join-Path -Path $file.DirectoryName -ChildPath ($file.BaseName + ".mp3")
    try {
        sox -t raw -r 8000 -e a-law "$($file.FullName)" "$outputFile"
        Write-Host "✅ 成功转换:$($file.Name)"
    }
    catch {
        Write-Error "❌ 转换失败:$($file.Name) - 错误信息:$_"
    }
}

这样就能全自动批量完成所有.vox文件到MP3的转换,不用手动逐个敲命令啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:48:10