如何用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
相关产品推荐
相关产品推荐

