Тема: VBS: скрипт пакетной обработки видеофайлов в Avidemux
Нашел батничек пакетной обработки видео из командной строки в Avidemux:
FOR /L %%a IN (1,1,7) DO "C:\Program Files\Avidemux 2.5\avidemux2_cli.exe" --force-alt-h264 --load "d:\kino\Arere - 0%%a.avi" --audio-codec MP3 --audio-bitrate 96 --save "g:\Arere - 0%%a.avi" --quit
ну и решил сделать vbs-скрипт пакетной обработки видеофайлов в папке.
Первая проба простой обработки работает нормально:
Dim WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")
WSHShell.Run("""C:\Program Files\Avidemux 2.5\avidemux2_cli.exe"" --force-alt-h264 --load ""d:\kino\Arere - 22.avi"" --audio-codec MP3 --audio-bitrate 96 --save ""g:\Arere - 22.avi"" --quit")
А вот в пакетном режиме, запускается сразу столько окон сколько файлов в папке. Т.е надо дождаться окончания одного цикла, а потом уж запускать следущий. Как? И файлы с пробелами в названии не обрабатывает
input = "g:\222\" 'папка input
output= "g:\" 'папка output
i=0
Dim WSHShell
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set WSHShell = WScript.CreateObject("WScript.Shell")
RecursiveFolderScan input
Msgbox "ВСЕ! Обработано "& i &" файлов"
'Создаём процедуру рекурсивного обхода каталога
Sub RecursiveFolderScan(FolderPath)
'Получаем объектную модель текущего каталога
Set Folder = objFSO.GetFolder(FolderPath)
'Перебираем все файлы в текущем каталоге
For Each File in Folder.Files
WSHShell.Run("""C:\Program Files\Avidemux 2.5\avidemux2_cli.exe"" --force-alt-h264 --load "+File+" --audio-codec MP3 --audio-bitrate 96 --save "+output+File.Name+" --quit")
i=i+1 'счетчик файлов
Next
'Перебираем все подкаталоги в каталоге
For Each SubFolder in Folder.SubFolders
RecursiveFolderScan(SubFolder.Path)
Next
Set WSHShell = Nothing
End Sub
Спецы, посмотрите, пожалуйста, какие есть ошибки со стороны моего vbs-кода? Или это уже глюки Avidemux?
Может лучше сделать через Exec, а не через Run? Просто не вижу разницы между ними.