Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Передача значения переменной сторонней программе (http://forum.oszone.net/showthread.php?t=337870)

DJ Mogarych 24-11-2018 11:44 2842365

Передача значения переменной сторонней программе
 
Привет!

Написал скрипт по перекодированию аудио в 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

В чём ошибка?

Busla 24-11-2018 11:56 2842366

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

DJ Mogarych 24-11-2018 12:13 2842370

Код:

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


Kazun 24-11-2018 12:23 2842373

Код:

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

'-q:a' 0

DJ Mogarych 24-11-2018 13:47 2842385

Спасибо, с методом 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


Kazun 24-11-2018 14:01 2842386

Тогда привести полный скрипт.

YuS_2 24-11-2018 15:00 2842389

Можно использовать stop-parsing символ '--%'
Код:

man about_Special_Characters

DJ Mogarych 28-11-2018 14:06 2843076

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

android63rus 30-11-2018 14:43 2843432

Цитата:

Цитата DJ Mogarych
если запускать скрипт не в ISE. »

интересно, в чем разница?


Время: 15:04.

Время: 15:04.
© OSzone.net 2001-