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

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

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

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


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

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


Не знаю даже как объяснить...
1)Возможно ли передать значение переменной - как параметр для другого приложения? При том что этот параметр не задуман как переменная...
2)Возможно ли два файла с одинаковым именем, но с разным расширением, задать как одну переменную? При этом самих пар этих файлов может быть несколько. то-есть видимо потребуется ещё и цикл назначения переменных.
3)Создать цикл внутри другого цикла?
Постараюсь объяснить.
Есть программа CinemaCraft Encoder
Она перекодирует видео из AVI в два отдельных(аудио и видео) mpeg файла
С этим проблем нет.
Есть консольная программа mplex.exe
Она склеивает видео mpeg файл и аудио mpeg файл в один, совместимый с DVD-video, аудио-видео mpeg файл.
Для запуска этой проги набирается команда:
Код: Выделить весь код
mplex -F 8 -O 001.mpg 001.m2v 001.mpa
(где:
-F 8 параметр указывающий на то, что выходной файл, должен быть совместим с DVD-video
-O 001.mpg имя выходного файла
001.m2v 001.mpa имена фалов источников)
Задача:
К примеру я перекодирую определённое кол-во AVI файлов, с помощью CinemaCraft в одну папку:
Получаю в этой папке:
Иванова.m2v
Иванова.mpa
Петрова.m2v
Петрова.mpa
Для начала я попытался сделать вот такое:

Код: Выделить весь код
set parametr = Иванова.mpg Иванова.m2v Иванова.mpa
set mplx = mplex.exe -f 8 -o %parametr%
for %%f in (*.m2v) do %mplx %%f
Тут я задал имеющиеся файлы как переменную, и попытался по-быстрому проверить передачу этой переменной как параметр для mplex

В результате получил такую команду:
Код: Выделить весь код
mplex.exe -f 8 -o parametrf
Понятное дело из этого ничего не выходит.
Вот собственно и первый вопрос:
Возможно ли передать значение переменной - как параметр для другого приложения? При том что этот параметр не задуман как переменная...

С остальными вопросам, пока промолчу. Если найдётся ответ на этот, то остальные есть вверху сообщения.

Отправлено: 20:23, 15-02-2010

 

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


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

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


Попробовал задать переменную командой для ввода данных пользователем:
Код: Выделить весь код
set /P var=[input names]
вместо
Код: Выделить весь код
set parametr = Иванова.mpg Иванова.m2v Иванова.mpa
Так сработало. То-есть видимо я допускаю ошибку именно в составлении выражения. Наверное путаюсь со знаками %%, Их расположение я просто передрал с другого выражения. Видимо не подходит...

О! Одну ошибку определил
Я ставил ненужные пробелы....
Соответственно выяснил, что переменную как параметр для другого приложения задать можно. Правильно писать так:
Код: Выделить весь код
set parametr=Иванова.mpg Иванова.m2v Иванова.mpa
set mplx=mplex.exe -f 8 -o 
for %%f in (*.m2v) do %mplx %%f%  %parametr%

Последний раз редактировалось taravasya, 15-02-2010 в 22:25.


Отправлено: 22:08, 15-02-2010 | #2



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

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


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


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

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


Ну пожалуйста подскажите кто-нибудь....
Собственно я на 90% решил задачу. Уж простят меня модераторы, получается диалог сам с собой, но и он мне видимо помогает...
Во общем делаю так:
Код: Выделить весь код
echo off
set mx=mplex.exe -f 8 -o
set demuxfld=f:\demuxed
set demuxvfls=*.mpv
set demuxafls=*.mpa
for %%v in (%demuxfld%\%demuxvfls%) do %mx%  %%~nv%%..mpg  %%v%
В итоге получаю правильный mpg со всех источников, но только с видео!.
А от куда же взяться аудио если его нет в цикле?
Как правильно запихнуть ещё один цикл - внутрь текущего?
Либо как заполучить две переменных в одном цикле?
Елси я делаю так:
Код: Выделить весь код
echo off
set mx=mplex.exe -f 8 -o
set demuxfld=f:\demuxed
set demuxvfls=*.mpv
set demuxafls=*.mpa
for %%v in (%demuxfld%\%demuxvfls%) do (
%%v for %%a in (%demuxfld%\%demuxafls%) do (
%mx% %%~nv%%..mpg %%v%
)
То получаю - непредвиденное появление do

Отправлено: 03:18, 16-02-2010 | #3


Googler


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

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


если из текущего каталога, то где-то так:
Код: Выделить весь код
For %%i In (*.m2v) Do mplex.exe -f 8 -o %%~ni.mpg %%~ni.m2v %%~ni.mpa

-------
Как сообщить о том, что моя проблема решена?
не оказываю техподдержку через ПМ/ICQ/Mail - для этого есть форум

Это сообщение посчитали полезным следующие участники:

Отправлено: 03:40, 16-02-2010 | #4


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


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

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


Блин!!! Как всё просто! Спасибо.
Залогом являются одинаковые имена и аудио и видео файлов?
Получается мы как бы обманываем интерпретатор?
Он считая что берёт всё ту же %%i, подхватывает и аудио, благодаря тому, что %%i мы развернули только в имя файла, без расширения?!! Гениально!
И главное проколов не будет, потому как, имя и у аудио и у видео всегда одинаковы(только если специально их переименовать)
Вот спасибо....
Я пока не буду помечать тему решённой, потому как мне предстоит решить ещё один вопрос, напрямую касающийся этих.
Но надеюсь что справлюсь. И тогда помечу решённой.
Еще раз спасибо.
PS
В итоге выглядит так:
Код: Выделить весь код
set mx=mplex.exe -f 8 -o
set demuxfld=f:\demuxed
set remuxfld=f:\remuxed
for %%v in (%demuxfld%\*.mpv) do %mx% %remuxfld%\%%~nv.mpg %demuxfld%\%%~nv.mpv %demuxfld%\%%~nv.mpa

Отправлено: 04:06, 16-02-2010 | #5


Googler


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

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


Цитата taravasya:
Получается мы как бы обманываем интерпретатор? »
почему обманываем?.. собственно, так и задумано:
Код: Выделить весь код
FOR /?

-------
Как сообщить о том, что моя проблема решена?
не оказываю техподдержку через ПМ/ICQ/Mail - для этого есть форум

Это сообщение посчитали полезным следующие участники:

Отправлено: 04:36, 16-02-2010 | #6


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


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

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


Цитата amel27:
FOR /? »
Эх... Сколько раз перечитал. А главного не уловил. Опыта мало совсем. Практически нет.

Отправлено: 04:49, 16-02-2010 | #7



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
C/C++ - Какая переменная быстрее? Ferum01 Программирование и базы данных 7 08-10-2009 02:12
Переменная Null в AutoIt abb269 AutoIt 13 28-08-2009 10:49
Глобальная переменная 11943499 AutoIt 9 23-07-2009 20:58
Переменная kern.maxproc xliver Общий по FreeBSD 2 02-03-2007 22:38
Php. Переменная массив или нет? Как узнать? E-mail Вебмастеру 3 26-03-2005 04:15




 
Переход