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

如何用PowerShell通过PeerTube CLI批量上传文件夹内视频?

批量上传MP4到PeerTube的PowerShell脚本修复方案

你的原脚本存在几个关键问题:

  • $video是FileInfo对象,直接传给--video-name会输出对象类型信息而非文件名
  • $folderpath\$video的路径拼接方式错误,直接使用对象会导致路径格式异常
  • 多余的$form变量未实际参与上传流程,属于无效代码

以下是修正后的可运行脚本:

# 目标视频文件夹路径
$folderPath = "E:\test\"

# 获取文件夹下所有MP4文件(仅文件,不含子文件夹)
$videoFiles = Get-ChildItem -Path $folderPath -Filter *.mp4 -File

# 遍历每个视频文件
foreach ($video in $videoFiles) {
    # 提取视频名称(使用文件名不含后缀,可根据需求调整)
    $videoName = $video.BaseName

    # 执行PeerTube CLI上传命令
    peertube-cli upload --video-name "$videoName" --file "$($video.FullName)"

    # 可选:添加延迟避免请求过于频繁
    Start-Sleep -Seconds 2

    # 可选:上传结果校验与日志输出
    if ($LASTEXITCODE -ne 0) {
        Write-Host "上传失败: $($video.Name)" -ForegroundColor Red
    } else {
        Write-Host "上传成功: $($video.Name)" -ForegroundColor Green
    }
}

关键说明:

  • 使用$video.BaseName获取不含后缀的文件名作为视频标题,若需完整文件名(含.mp4)可替换为$video.Name
  • $($video.FullName)直接调用文件对象的完整路径属性,避免手动拼接路径的错误
  • Start-Sleep可选延迟可防止短时间大量请求触发PeerTube限流机制
  • 通过$LASTEXITCODE检查命令执行结果,方便快速定位上传失败的文件

如果需要按文件名前缀(如001-、002-)排序后上传,可在获取文件时添加排序逻辑:

$videoFiles = Get-ChildItem -Path $folderPath -Filter *.mp4 -File | Sort-Object Name

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 20:03:17