Пакетный скрипт Windows с несколькими командами

Итак, у меня есть скрипт Windows 10 .bat для преобразования видео всех типов в одну папку и вывода в другую с помощью HandbrakeCLI с несколькими командами.

В дополнение к этому я хочу использовать ограничитель использования ЦП, такой как BES, чтобы контролировать использование ЦП HandbrakeCLI. .

После преобразования каждого файла я хочу отправить себе уведомление Pushbullet о том, что преобразование завершено.

Приведенный ниже код помогает мне добиться этого, однако мне нужно дважды запустить файл .bat, чтобы запустить его, и после одной итерации он останавливается.

Первоначально были проблемы с использованием нескольких команд, а также с поиском и использованием «&» между командами, без радости.

У меня уже есть сценарий Powershell, который делает все это, поэтому, пожалуйста, не предлагайте Powershell, я не хочу его использовать, потому что сценарий Powershell требует повышенных привилегий, которые я больше не хочу давать.

FOR /R "D:\ToConvert" %%i IN (*.*) DO "C:\Program Files (x86)\BES_1.6.2\BES.exe" "C:\Program Files\Handbrake\HandBrakeCLI.exe" 33 --minimize & "C:\Program Files\HandBrake\HandBrakeCLI.exe" -i "%%i" -t 1 -c 1 -o "D:\Done\%%~ni.mp4" --preset="Normal" --optimize & powershell -ExecutionPolicy Bypass -command "D:\Scripts\SendPushBullet.ps1 "%%~ni" " Converted"" & taskkill /im BES.exe

OR

call "C:\Program Files (x86)\BES_1.6.2\BES.exe" "C:\Program Files\Handbrake\HandBrakeCLI.exe" 33 --minimize
for /r "D:\ToConvert" %%i IN (*) do (
"C:\Program Files\HandBrake\HandBrakeCLI.exe" -i "%%i" -o "D:\Done\%%~ni.mp4" --preset="Normal" --optimize
powershell -ExecutionPolicy Bypass -command "D:\Scripts\SendPushBullet.ps1 "%%~ni" " Converted""
)
taskkill /im BES.exe
exit /b

//СДЕЛАТЬ

Удалить уже преобразованный файл

Обновление: он заработал, используя приведенный ниже код, но теперь вы хотите удалить преобразованный файл из папки «ToConvert» для каждого цикла.

start "" "C:\Program Files (x86)\BES_1.6.2\BES.exe" "C:\Program Files\Handbrake\HandBrakeCLI.exe" 33 --minimize
for /r "D:\ToConvert" %%i IN (*) do (
"C:\Program Files\HandBrake\HandBrakeCLI.exe" -i "%%i" -o "D:\Done\%%~ni.mp4" --preset="Normal" --optimize
powershell -ExecutionPolicy Bypass -command "D:\Scripts\SendPushBullet.ps1 "%%~ni" " Converted""
)
taskkill /im BES.exe

person Mad Max    schedule 25.08.2015    source источник
comment
Второй вариант мне кажется удачным. Я бы только поместил закрывающую скобку цикла FOR-DO в отдельную строку.   -  person Melebius    schedule 25.08.2015


Ответы (2)


Чтобы удалить исходный файл из ToConvert, вы можете просто добавить del "%%i" в конце цикла. Действительно, %%i содержит абсолютный путь к файлу.

person fmauNeko    schedule 25.08.2015
comment
Спасибо! Пробовал, но решил сделать полное удаление в конце полного преобразования! - person Mad Max; 25.08.2015

Код ниже работал;)

start "" "C:\Program Files (x86)\BES_1.6.2\BES.exe" "C:\Program Files\Handbrake\HandBrakeCLI.exe" 33 --minimize
for /r "D:\ToConvert" %%i IN (*) do (
"C:\Program Files\HandBrake\HandBrakeCLI.exe" -i "%%i" -o "D:\Done\%%~ni.mp4" --preset="Normal" --optimize
powershell -ExecutionPolicy Bypass -command "D:\Scripts\SendPushBullet.ps1 "%%~ni" " Converted""
)
taskkill /im BES.exe
del /f /q "D:\ToConvert\*.*"
person Mad Max    schedule 25.08.2015