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

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

Ответить
Настройки темы
PowerShell - [решено] Передача значения переменной сторонней программе

Аватара для DJ Mogarych

fascinating rhythm


Moderator


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


Конфигурация

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


Привет!

Написал скрипт по перекодированию аудио в mp3, финальная строка в цикле такая:
Код: Выделить весь код
ffmpeg -i ""$ifile"" $qualityaudio ""$path\$ofile$extout""
Если заключить её в кавычки, то строки просто выводятся на экран, причём, корректно сформированные:
Код: Выделить весь код
ffmpeg -i "C:\Users\123\Music\Ben Webster - Art Tatum Quartet [1956]\15 Art Tatum and Ben Webster - All the things you are (Art Tatum 1953).flac" 
-q:a 0 "C:\Users\123\Music\Ben Webster - Art Tatum Quartet [1956]\15 Art Tatum and Ben Webster - All the things you are (Art Tatum 1953).mp3"
Но я не могу заставить их выполняться, где-то по дороге теряется часть строки:
Код: Выделить весь код
ffmpeg : ffmpeg version N-92510-gfa08345e88 Copyright (c) 2000-2018 the FFmpeg developers
C:\Users\123\Desktop\ffmpeg.ps1:11 знак:1
+ ffmpeg -i ""$ifile"" $qualityaudio ""$path\$ofile$extout""
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (ffmpeg version ...mpeg developers:String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError
 
  built with gcc 8.2.1 (GCC) 20181017
  configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libbluray -
-enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine
 --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --e
nable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbe
nc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d1
1va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth
  libavutil      56. 23.101 / 56. 23.101
  libavcodec     58. 39.100 / 58. 39.100
  libavformat    58. 22.100 / 58. 22.100
  libavdevice    58.  6.100 / 58.  6.100
  libavfilter     7. 46.100 /  7. 46.100
  libswscale      5.  4.100 /  5.  4.100
  libswresample   3.  4.100 /  3.  4.100
  libpostproc    55.  4.100 / 55.  4.100
Trailing options were found on the commandline.
Input #0, flac, from 'C:\Users\123\Music\Ben Webster - Art Tatum Quartet [1956]\15 Art Tatum and Ben Webster - All the things you are (Art Tatum 
1953).flac':
  Metadata:
    track           : 
15
    DATE            : 
1956
    TITLE           : 
All the things you are (Art Tatum 1953
)
    ARTIST          : 
Art Tatum and Ben Webste
r
    ALBUM           : 
The Art Tatum В· Ben Webster quartet
    GENRE           : 
Jazz
    NOTES           : 
Medieval CUE Splitter (www.medieval.it
)
    album_artist    : 
VA
    TOTALTRACKS     : 
15
  Duration: 
00:06:01.4
0
, start:
 
0.000000
, bitrate:
 
478 kb/s
    Stream #0:
0
: Audio: flac, 44100 Hz, stereo, s16
At least one output file must be specified
В чём ошибка?

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 11:44, 24-11-2018

 

Ветеран


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

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


Оформите запуск через Start-Process

Отправлено: 11:56, 24-11-2018 | #2



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

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


Аватара для DJ Mogarych

fascinating rhythm


Moderator


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

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


Код: Выделить весь код
Start-Process "ffmpeg -i ""$ifile"" $qualityaudio ""$path\$ofile$extout"""
даёт
Код: Выделить весь код
Start-Process : Не удается выполнить команду из-за следующей ошибки: Не удается найти указанный файл.
C:\Users\123\Desktop\ffmpeg.ps1:11 знак:1
+ Start-Process "C:\scripts\ffmpeg\bin\ffmpeg.exe -i ""$ifile"" $qualit ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [Start-Process], InvalidOperationException
    + FullyQualifiedErrorId : InvalidOperationException,Microsoft.PowerShell.Commands.StartProcessCommand

Код: Выделить весь код
Start-Process ffmpeg -i ""$ifile"" $qualityaudio ""$path\$ofile$extout""
даёт
Код: Выделить весь код
Start-Process : Не удается обработать параметр, так как имя параметра "i" неоднозначно. Возможные совпадения: -InformationAction -InformationVariable
.
C:\Users\123\Desktop\ffmpeg.ps1:11 знак:48
+ Start-Process C:\scripts\ffmpeg\bin\ffmpeg.exe -i ""$ifile"" $quality ...
+                                                ~~
    + CategoryInfo          : InvalidArgument: (:) [Start-Process], ParameterBindingException
    + FullyQualifiedErrorId : AmbiguousParameter,Microsoft.PowerShell.Commands.StartProcessCommand

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 12:13, 24-11-2018 | #3


Ветеран


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

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


Код: Выделить весь код
ffmpeg -i $ifile -aq 0 $ifile.replace('.flac','.mp3')
Для -q:a 0, должно быть:
Код: Выделить весь код
'-q:a' 0

Последний раз редактировалось Kazun, 24-11-2018 в 13:56. Причина: aq

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

Отправлено: 12:23, 24-11-2018 | #4


Аватара для DJ Mogarych

fascinating rhythm


Moderator


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

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


Спасибо, с методом replace гораздо удобнее!
Интересно, что работать-то работает, но всё равно ругается, и шрифт красный:

Код: Выделить весь код
ffmpeg : ffmpeg version N-92510-gfa08345e88 Copyright (c) 2000-2018 the FFmpeg developers
C:\Users\123\Desktop\ffmpeg.ps1:12 знак:1
+ ffmpeg -i ""$ifile"" '-q:a' $qualityaudio $ifile.replace($extin, $ext ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (ffmpeg version ...mpeg developers:String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 13:47, 24-11-2018 | #5


Ветеран


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

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


Тогда привести полный скрипт.
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:01, 24-11-2018 | #6


Аватара для YuS_2

Crazy


Contributor


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

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


Можно использовать stop-parsing символ '--%'
Код: Выделить весь код
man about_Special_Characters

-------
scio me nihil scire. Ѫ

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

Отправлено: 15:00, 24-11-2018 | #7


Аватара для DJ Mogarych

fascinating rhythm


Moderator


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

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


Kazun, всё в порядке, если запускать скрипт не в ISE.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 14:06, 28-11-2018 | #8


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


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

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


Цитата DJ Mogarych:
если запускать скрипт не в ISE. »
интересно, в чем разница?

Отправлено: 14:43, 30-11-2018 | #9



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - Передача и вызов переменной в VBS скриптах pzh2393 Скриптовые языки администрирования Windows 8 24-08-2015 19:17
CMD/BAT - Присвоение значения переменной starav Скриптовые языки администрирования Windows 1 30-05-2013 09:23
C/C++ - Передача переменной в другую программу. ikif Программирование и базы данных 1 29-04-2011 21:50
CMD/BAT - [решено] Передача значения переменной в IF при EnableExtensions kotik147 Скриптовые языки администрирования Windows 1 19-05-2010 09:22
VBS/WHS/JS - Вывод значения переменной в сообщение la_vanille_ciel Программирование и базы данных 3 09-04-2008 11:55




 
Переход