Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Выполнить действие для текущего файла

Ответить
Настройки темы
CMD/BAT - [решено] Выполнить действие для текущего файла

Новый участник


Сообщения: 12
Благодарности: 0

Профиль | Отправить PM | Цитировать


Добрый день.
Помогите пожалуйста.

Имеется BATник выполняющий функцию слияния одноименных файлов звука .m4a и видео .mp4, например луна.mp4 склеится с луна.m4a на выходе будет луна.mkv
Код: Выделить весь код
@ECHO OFF
for %%f in ("*.mp4") do mkvmerge.exe --output "%%f.mkv" ( "%%~nf.m4a" ) --no-audio --no-subtitles --no-attachments ( "%%f" ) --track-order 1:0,0:0
:end
Для того чтоб сработало, BATник всегда лежит в папке с этими файлами.

Очень бы хотелось сделать удаленно лежащий батник, и для него ярлык положить например в папку контекстного меню "Отправить...".
Т.е. чтоб правой кнопкой например по видеосодержащему файлу .mp4 ПКМ - Отправить - Батник и пошел процесс слияния даже если батник не лежит в текущей папке.

Если я сильно много хочу, то как вариант мне также нормальным кажется временное копирование батника в папку с текущим файлом, для которого я сделал ПКМ - Отправить - БАТник.
Т.е. лежит батник с вышеуказанным кодом на диске "c:\Program Files\K-Lite Codec Pack\Filters\ffmpeg\mkv.bat"
Ярлык для него лежит в "c:\Users\Пользователь\AppData\Roaming\Microsoft\Windows\SendTo\mkv.ink"

По случайному файлу, лежащему например в D:\Temp2\луна.mp4 (само собой и аудио файл скорее всего там лежит луна.m4a), ПКМ - Отправить - Батник
- батник копирует получается сам себя mkv.bat в эту папку с файлом (папку чтоб определяло просто как текущую, а не именно D:\Temp2\)
- выполняется
- самоудаляется из текущей папки

Отправлено: 11:47, 19-09-2020

 

Новый участник


Сообщения: 12
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: png screen___3.png
(12.4 Kb, 8 просмотров)

Fors1k
запустил PowerShell, вставил код, путь примерно следующий указав
Код: Выделить весь код
'd:\Temp2\Windows и сеть\Windows установка\Обновления и настройки\MKV\MKVtoolnix\mkvmerge.exe'
оставил для пути только ваши скобки.

Получаю следующий результат.
http://forum.oszone.net/attachment.p...1&d=1600713934




megaloman
помогите пожалуйста облагородить этот код, режет все файлы с соответствующими расширениями в папке откуда запускается батник.
Код: Выделить весь код
for %%f in ("*.m4v","*.mp4","*.mpg","*.mpeg","*.avi","*.flv","*.webm","*.mkv","*.ts","*.m2ts") do mkvmerge.exe --output "J://%%~nf/%%f" --split size:95M ( "%%f" )
избавится от привязки к конкретной папке, чтоб например можно было через ярлык SendTo запустить на любом файле.

Отправлено: 21:45, 21-09-2020 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Fors1k

Старожил


Сообщения: 193
Благодарности: 112

Профиль | Отправить PM | Цитировать


Цитата A555555:
Получаю следующий результат. »
Все, можете пользоваться.

Отправлено: 23:26, 21-09-2020 | #12


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


Цитата A555555:
помогите пожалуйста облагородить этот код, режет все файлы с соответствующими расширениями в папке откуда запускается батник. ... избавится от привязки к конкретной папке, чтоб например можно было через ярлык SendTo запустить на любом файле. »
Если "избавится от привязки к конкретной папке" - то задача решена - вместо Вашей строки из предыдущего кода (она выделена красным цветом) поставьте другую, как я понимаю, Ваш код обрабатывает все файлы в папке. Никаких изменений при этом в Вашей строке не требуется. Ежели надо обработать конкретный единичный файл (Вы как-то нечётко сформулировали мысль: то ли Вам папка надо, то ли файл)- пишите, буду думать.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 08:43, 22-09-2020 | #13


Новый участник


Сообщения: 12
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

А вот для случая "порезать" файл под FAT32 флешку нет особенно ограничителей типа одноименности и в итоге например в папке куда я качаю торренты может быть очень много mkv и т.п., но порезать нужно конкретный.
Просто вставив свой код в ваш, работает, но в инете особенно не принято одиночные файлы видео класть в отдельную папку при раздаче. А копировать в стронку крупные файлы или при скачивании городить каждому свою папку грустный вариант.

У меня есть украденный из интернета код под ffdshow, он перекодированием через ярлык в "Отправить" занимается именно указанного файла.
Код: Выделить весь код
@ECHO OFF
IF %1.==. (
ECHO [-------------- SendTo FFmpeg converter ---------------]
ECHO [     NO FILE SPECIFIED                                ]
ECHO [------------------------------------------------------]
) ELSE (
"c:\Program Files\K-Lite Codec Pack\Filters\ffmpeg\ffmpeg.exe" -i %1 -c:v libx264 -pix_fmt yuv420p -preset slow -crf 26 -y %1_[COPY].mp4
ECHO [-------------- SendTo FFmpeg converter ---------------]
ECHO [     SERVED                                           ]
ECHO [------------------------------------------------------]
)
:end
конечно же, как человек без знаний по этой теме, я попробовал вставить и сюда, но не прокатило.

Последний раз редактировалось A555555, 22-09-2020 в 19:43.


Отправлено: 19:12, 22-09-2020 | #14


Новый участник


Сообщения: 12
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: png screen___1.png
(12.5 Kb, 4 просмотров)

Цитата Fors1k:
Все, можете пользоваться. »
снова не работает.
При попытке в общей папке указать како-то файл проходится по всем отвечающим нужному расширению с ошибкой для каждого
http://forum.oszone.net/attachment.p...1&d=1600792807

Попробовал и в тепличных условиях, вынеся в отдельную папку одноименные видео и аудио для склейки, тоже не нравится
http://forum.oszone.net/attachment.p...1&d=1600792689

Отправлено: 19:38, 22-09-2020 | #15


Аватара для Fors1k

Старожил


Сообщения: 193
Благодарности: 112

Профиль | Отправить PM | Цитировать


A555555, Выполните в powershell, покажите вывод еще раз.
Код: Выделить весь код
cls
reg query HKLM\Software\Classes\*\shell\MKVmerge\command /ve

Отправлено: 19:47, 22-09-2020 | #16


Новый участник


Сообщения: 12
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: jpg screen__.jpg
(59.8 Kb, 2 просмотров)

Fors1k,
уже положил программу по изначально данному вами пути, чтоб хоть этот момент с русскими буквами и пробелами не влезал
http://forum.oszone.net/attachment.p...1&d=1600794368

Отправлено: 20:07, 22-09-2020 | #17


Аватара для Fors1k

Старожил


Сообщения: 193
Благодарности: 112

Профиль | Отправить PM | Цитировать


A555555,
Вывод каких-то команд лучше выкладывайте текстом, а не скриншотом.
У вас MKVmerge.exe в 'C:\soft\mkvmerge.exe' или в 'd:\Temp2\Windows и сеть\Windows установка\Обновления и настройки\MKV\MKVtoolnix\mkvmerge.exe' ?
На всякий случай покажите вывод $host.Version .

Отправлено: 21:55, 22-09-2020 | #18


Новый участник


Сообщения: 12
Благодарности: 0

Профиль | Отправить PM | Цитировать


Fors1k,

Цитата Fors1k:
На всякий случай покажите вывод $host.Version . »
Цитата:
Major Minor Build Revisi
----- ----- ----- ------
4 0 -1 -1

Цитата Fors1k:
У вас MKVmerge.exe в 'C:\soft\mkvmerge.exe' или в 'd:\Temp2\Windows и сеть\Windows установка\Обновления и настройки\MKV\MKVtoolnix\mkvmerge.exe' ? »
На данный момент и там и там, но прописано вашим кодом сюда
'C:\soft\mkvmerge.exe'
чтоб точно не мешались сюда ещё пути.

Отправлено: 22:13, 22-09-2020 | #19


Аватара для Fors1k

Старожил


Сообщения: 193
Благодарности: 112

Профиль | Отправить PM | Цитировать


Цитата A555555:
Major Minor Build Revisi
----- ----- ----- ------
4 0 -1 -1 »
Вам нужно установить обновление: https://www.microsoft.com/en-us/down....aspx?id=54616

Отправлено: 23:58, 22-09-2020 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Выполнить действие для текущего файла

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Выполнить действие при наличии определенных файлов в папках alexfeel30 Скриптовые языки администрирования Windows 1 03-03-2019 22:18
2007 - [решено] Excel. В зависимости от цвета заливки выполнить действие. vlad20 Microsoft Office (Word, Excel, Outlook и т.д.) 1 27-08-2012 14:21
Выполнить действие по отсутствию цвета deffol AutoIt 3 14-08-2011 01:32
Как получить имя текущего пользователя для использования его в имени файла Denchik Автоматическая установка Windows 2000/XP/2003 1 25-01-2006 22:33




 
Переход