|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Выполнить действие для текущего файла |
|
|
CMD/BAT - [решено] Выполнить действие для текущего файла
|
Новый участник Сообщения: 12 |
Добрый день.
Помогите пожалуйста. Имеется 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 Очень бы хотелось сделать удаленно лежащий батник, и для него ярлык положить например в папку контекстного меню "Отправить...". Т.е. чтоб правой кнопкой например по видеосодержащему файлу .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 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать A555555,
@Echo Off
cls
Pushd %1 ||(Echo Folder "%~1" not correct &Pause &Exit /B 2)
CD
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
Popd
Exit /B
Вашу строку никак не тестировал. |
------- Отправлено: 13:41, 19-09-2020 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 12
|
Профиль | Отправить PM | Цитировать megaloman
Очень круто. Можно перетягивать папку, а можно как я и хотел через контекстное "Отправить" тоже по нужной папке. |
Отправлено: 14:18, 19-09-2020 | #3 |
Старожил Сообщения: 193
|
Профиль | Отправить PM | Цитировать Цитата A555555:
Param( $mkvmerge = 'C:\soft\mkvmerge.exe' )cls reg add HKLM\SOFTWARE\Classes\*\shell\MKVmerge\command /d "powershell.exe gci *.mp4|%%{`$mkv=`$_.Name -replace'[^\.]+$', 'mkv';`$m4a=`$_.Name -replace'[^\.]+$', 'm4a';$mkvmerge --output `$mkv (`$m4a) --no-audio --no-subtitles --no-attachments (`$_.name) --track-order 1:0,0:0}" /f |
|
Отправлено: 22:46, 20-09-2020 | #4 |
Новый участник Сообщения: 12
|
Профиль | Отправить PM | Цитировать Fors1k
ошибка по всей видимости http://forum.oszone.net/attachment.p...1&d=1600632291 ПКМ по mp4 файлу к которому нужно приклеить одноименную m4a, выбираю новый пункт mkvmerge в меню. |
|
Отправлено: 23:06, 20-09-2020 | #5 |
Старожил Сообщения: 193
|
Профиль | Отправить PM | Цитировать |
Отправлено: 13:06, 21-09-2020 | #6 |
Новый участник Сообщения: 12
|
Профиль | Отправить PM | Цитировать Fors1k
Цитата Fors1k:
C:\Users\ПОЛЬЗОВАТЕЛЬ>$host.Version "$host.Version" не является внутренней или внешней командой, исполняемой программой или пакетным файлом. Цитата Fors1k:
C:\Users\ПОЛЬЗОВАТЕЛЬ>reg query HKLM\Software\Classes\*\shell\MKVmerge\command /ve HKEY_LOCAL_MACHINE\Software\Classes\*\shell\MKVmerge\command (по умолчанию) REG_SZ powershell.exe gci *.mp4|%{`$mkv=`$_.Name -repla ce'[^\.]+$', 'mkv';`$m4a=`$_.Name -replace'[^\.]+$', 'm4a';$mkvmerge --output `$ mkv (`$m4a) --no-audio --no-subtitles --no-attachments (`$_.name) --track-order 1:0,0:0} |
||
Отправлено: 19:25, 21-09-2020 | #7 |
Старожил Сообщения: 193
|
Профиль | Отправить PM | Цитировать Вставьте и выполните код из моего первого сообщения в powershell, а не в cmd. Тогда все заработает. Только измените путь к mkvmerge.exe .
|
Отправлено: 19:59, 21-09-2020 | #8 |
Новый участник Сообщения: 12
|
Профиль | Отправить PM | Цитировать Fors1k
Мне не хватает мозгов, чтоб вашу мысль уловить. Мои исходные данные. mkvmerge.exe через переменные среды системы прописан в Системные переменные строка Path. Путь там с русскими буквами и пробелами. В вашем коде путь на свой сменил, взяв путь в обычные двухчерточные кавычки. Запускал ваш код, и привел скрин ошибки из PowerShell. Сейчас ошибка сохраняется. |
Последний раз редактировалось A555555, 21-09-2020 в 21:46. Отправлено: 20:45, 21-09-2020 | #9 |
Старожил Сообщения: 193
|
Профиль | Отправить PM | Цитировать Цитата A555555:
Напишите там powershell, нажмите Enter. В открывшееся окно вставьте код, предварительно изменив в нем путь. Param( $mkvmerge = 'C:\soft\mkvmerge.exe' )cls reg add HKLM\SOFTWARE\Classes\*\shell\MKVmerge\command /d "powershell.exe gci *.mp4|%%{`$mkv=`$_.Name -replace'[^\.]+$', 'mkv';`$m4a=`$_.Name -replace'[^\.]+$', 'm4a';$mkvmerge --output `$mkv (`$m4a) --no-audio --no-subtitles --no-attachments (`$_.name) --track-order 1:0,0:0}" /f |
|
Отправлено: 21:32, 21-09-2020 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|