CMD/BAT - [решено] автоответ bat-нику во время его работы с последующим продолжением

Аватара пользователя
nwss

CMD/BAT - [решено] автоответ bat-нику во время его работы с последующим продолжением

Сообщение nwss »

Заранее извиняюсь за туманное название темы, сейчас объясню возникшую передо мной задачу.



Для упрощения своего работы сделал следующий командный файл. Его назначение: фиксация какой-либо информации в виде аудио-видео-заметок.





Тело bat-ника

[spoiler]

Код: Выделить всё

chcp 866>nul
setlocal enableextensions enabledelayedexpansion
set pt=%USERPROFILE%\desktop\zayavki
echo %time:~0,8% | sed s/:/./g>%TEMP%\zayavka.tmp
set /p clocks=<%TEMP%\zayavka.tmp
set "name=%pt%\%1-%date%-%clocks%.wmv"
@ffmpeg -f gdigrab -framerate 15 -i desktop -f dshow -i audio="Microphone (2- High Definition Audio Device)" "%name%"
for /f %%a in ('echo %name%') do ffmpeg -i "%name%" -c:v libx264 -crf 28 "%pt%\%%~na.mp4
del /f /q /s "%name%"
[/spoiler]




Прошу не показывать пальцем и не смеяться - сделал как умею. Конструктивную критику же, наоборот, приветствую Изображение

Он находится у меня в папке Windows чтобы я мог вызывать его из любого места просто запустив командную строку. Принимает 1 аргумент который будет частью имени созданного файла.

https://youtu.be/oAi1lSjgSBY
- демонстрация работы файла.



И наконец мой вопрос - на 0:27 в видео я нажимаю CTRL+C чтобы остановить запись, и командный файл спрашивает, продолжить ли ему исполнение или вовсе завершиться?

Как мне избежать этого вопроса и автоматически разрешить ему дальнейшее исполнение?

Если что ffmpeg - консольная утилита для работы с видео-аудио файлами, их конвертации, записи, вещания и т.п. ссылка на оф сайт -
https://ffmpeg.org/




Заранее благодарю всех за помощь.
Аватара пользователя
nwss

Re: CMD/BAT - [решено] автоответ bat-нику во время его работы с последующим продолжением

Сообщение nwss »

work like a charm, мое почтение Изображение

жаль что у меня какая-то детская обида на powershell. наверно за то, что не поддался мне когда пытался его освоить.
Аватара пользователя
DJ Mogarych

Re: CMD/BAT - [решено] автоответ bat-нику во время его работы с последующим продолжением

Сообщение DJ Mogarych »

Непонятно почему, в Powershell реагирует нормально.

Просто после Ctrl+C с большой вероятностью получится битый файл.
Аватара пользователя
nwss

Re: CMD/BAT - [решено] автоответ bat-нику во время его работы с последующим продолжением

Сообщение nwss »

Ни единого битого файла. Пользуюсь много лет уже.

Попробую вызвать ffmpeg через ps.



upd. так не выходит. не дружу с powershell. подскажите как правильно вызвать?



Код:

Код: Выделить всё

powershell -ExecutionPolicy Bypass -Command 'ffmpeg -f gdigrab -framerate 15 -i desktop -f dshow -i audio="Microphone (2- High Definition Audio Device)" "%name%"'
Аватара пользователя
DJ Mogarych

Re: CMD/BAT - [решено] автоответ bat-нику во время его работы с последующим продолжением

Сообщение DJ Mogarych »

Так не выйдет, это надо весь батник переписывать под PS. Попробуйте просто запустить строку записи прямо в PS и остановить её с помощью q.
Аватара пользователя
nwss

Re: CMD/BAT - [решено] автоответ bat-нику во время его работы с последующим продолжением

Сообщение nwss »

Да, через ps корректно завершается запись по q.

Переписать его под powershell я не осилю Изображение

Может кто предложит еще какие-то варианты. Я немного знаком с ahk.
Аватара пользователя
DJ Mogarych

Re: CMD/BAT - [решено] автоответ bat-нику во время его работы с последующим продолжением

Сообщение DJ Mogarych »

Опишите, что он делает, код cmd я не очень понимаю.

Он пишет в wmv, а потом конвертирует в mp4? Почему сразу в mp4 не писать?
Аватара пользователя
nwss

Re: CMD/BAT - [решено] автоответ bat-нику во время его работы с последующим продолжением

Сообщение nwss »

Потому что в mp4 почему-то не схватывает вывод с моего микрофона.

Точнее как только я начинаю говорить что-то - звук на видео просто пропадает.

Не знаю в чем дело, но вышел из ситуации вот так.

Добавил комментарии к bat-нику.



Код: Выделить всё

rem Рудимент, с кодировкой вроде и так впорядке все
chcp 866>nul
rem Тоже осталось от предыдущих экспериментов, не нужно
setlocal enableextensions enabledelayedexpansion
rem Следующие строчки формируют имя файла на выходе. 
rem Костыль с выводом в файл в темп сделал потому, что были какие-то проблемы
rem именно с именем файла на выходе
rem сейчас получается файл в формате %1-принимает первый аргумент при запуске
rem %date% - текущая дата, %clocks% - время до секунды (заменяя : на . с помощью sed)
set pt=%USERPROFILE%\desktop\zayavki
echo %time:~0,8% | sed s/:/./g>%TEMP%\zayavka.tmp
set /p clocks=<%TEMP%\zayavka.tmp
set "name=%pt%\%1-%date%-%clocks%.wmv"
rem запуск записи с экрана + микрофона
@ffmpeg -f gdigrab -framerate 15 -i desktop -f dshow -i audio="Microphone (2- High Definition Audio Device)" "%name%"
rem конвертируем wmv в mp4. %~na - только имя файла 
for /f %%a in ('echo %name%') do ffmpeg -i "%name%" -c:v libx264 -crf 28 "%pt%\%%~na.mp4
rem удаляем wmv оригинал
del /f /q /s "%name%"
Ответить

Вернуться в «Скриптовые языки администрирования Windows»