Выполнить действие для текущего файла
Добрый день.
Помогите пожалуйста. Имеется BATник выполняющий функцию слияния одноименных файлов звука .m4a и видео .mp4, например луна.mp4 склеится с луна.m4a на выходе будет луна.mkv Код:
@ECHO OFF Очень бы хотелось сделать удаленно лежащий батник, и для него ярлык положить например в папку контекстного меню "Отправить...". Т.е. чтоб правой кнопкой например по видеосодержащему файлу .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\) - выполняется - самоудаляется из текущей папки |
A555555,
Код:
@Echo Off Вашу строку никак не тестировал. |
megaloman
Очень круто. Можно перетягивать папку, а можно как я и хотел через контекстное "Отправить" тоже по нужной папке. |
Цитата:
Код:
Param( |
Вложений: 1
Fors1k
ошибка по всей видимости http://forum.oszone.net/attachment.p...1&d=1600632291 ПКМ по mp4 файлу к которому нужно приклеить одноименную m4a, выбираю новый пункт mkvmerge в меню. |
Запустил еще раз у себя. Работает без проблем.
Покажите вывод команды: Код:
$host.Version Код:
cls |
Fors1k
Цитата:
Код:
C:\Users\ПОЛЬЗОВАТЕЛЬ>$host.Version Цитата:
Код:
C:\Users\ПОЛЬЗОВАТЕЛЬ>reg query HKLM\Software\Classes\*\shell\MKVmerge\command /ve |
Вставьте и выполните код из моего первого сообщения в powershell, а не в cmd. Тогда все заработает. Только измените путь к mkvmerge.exe .
|
Fors1k
Мне не хватает мозгов, чтоб вашу мысль уловить. Мои исходные данные. mkvmerge.exe через переменные среды системы прописан в Системные переменные строка Path. Путь там с русскими буквами и пробелами. В вашем коде путь на свой сменил, взяв путь в обычные двухчерточные кавычки. Запускал ваш код, и привел скрин ошибки из PowerShell. Сейчас ошибка сохраняется. |
Цитата:
Напишите там powershell, нажмите Enter. В открывшееся окно вставьте код, предварительно изменив в нем путь. Код:
Param( |
Вложений: 1
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" ) |
Цитата:
|
Цитата:
|
megaloman
когда нужно склеить, то в папке скорее всего одни кандидаты будут и не страшно, что в ней много других фалов, одинаковость имени склеиваемых хорошо отсеивает ненужные. А вот для случая "порезать" файл под FAT32 флешку нет особенно ограничителей типа одноименности и в итоге например в папке куда я качаю торренты может быть очень много mkv и т.п., но порезать нужно конкретный. Просто вставив свой код в ваш, работает, но в инете особенно не принято одиночные файлы видео класть в отдельную папку при раздаче. А копировать в стронку крупные файлы или при скачивании городить каждому свою папку грустный вариант. У меня есть украденный из интернета код под ffdshow, он перекодированием через ярлык в "Отправить" занимается именно указанного файла. Код:
@ECHO OFF |
Вложений: 1
Цитата:
При попытке в общей папке указать како-то файл проходится по всем отвечающим нужному расширению с ошибкой для каждого http://forum.oszone.net/attachment.p...1&d=1600792807 Попробовал и в тепличных условиях, вынеся в отдельную папку одноименные видео и аудио для склейки, тоже не нравится http://forum.oszone.net/attachment.p...1&d=1600792689 |
A555555, Выполните в powershell, покажите вывод еще раз.
Код:
cls |
Вложений: 1
Fors1k,
уже положил программу по изначально данному вами пути, чтоб хоть этот момент с русскими буквами и пробелами не влезал http://forum.oszone.net/attachment.p...1&d=1600794368 |
A555555,
Вывод каких-то команд лучше выкладывайте текстом, а не скриншотом. У вас MKVmerge.exe в 'C:\soft\mkvmerge.exe' или в 'd:\Temp2\Windows и сеть\Windows установка\Обновления и настройки\MKV\MKVtoolnix\mkvmerge.exe' ? На всякий случай покажите вывод $host.Version . |
Fors1k,
Цитата:
Цитата:
Цитата:
'C:\soft\mkvmerge.exe' чтоб точно не мешались сюда ещё пути. |
Цитата:
|
Цитата:
На этом у меня тупик, служба обновления отключена и ещё много чего отключено давным давно в моей Win 8.1 :( Попытался, но установка обновления начинается, идет процесс, но неудача в итоге. Ваш способ и для второго моего случая подошел бы, как раз выбирается файл, но... Спасибо большое вам за помощь. megaloman придумал костыль как выделить из толпы mkv файлов в папке, нужный и его порезать. Можно сменить у файла расширение например на .mmm и именно такие расширения искать bat файлу задать. Как аварийный вариант пойдет. Красиво как сделать, чтоб именно файл указывать можно было, ищу в инете, не могу пока ничего подобного найти :( Т.е. вот такое извращение, сменил расширение на .mmm и запускаю Код:
@ECHO OFF |
megaloman
Здравствуйте. Не получится через Bat файл, для конкретного файла выполнять разрезание? Я уже в принципе и к предыдущему для всей папки варианту приспособился, но не могу не спросить у вас ещё раз. |
A555555, Нет ничего проще чем через Bat файл для конкретного файла что-то сделать. Сложнее понять, что Вы хотите получить. Я совершенно не знаю утилиту mkvmerge.exe и могу только очень приблизительно догадываться, как корректно нарисовать имя/путь файла в её параметрах. Вот вариант, но делал совершенно тупо и реально на Вашей утилите не проверял.
Код:
@Echo Off |
Время: 17:39. |
Время: 17:39.
© OSzone.net 2001-