Pull to refresh

Comments 32

Запускать надо командой powershell -executionpolicy unrestricted -file a.ps1.
Самой последней командой поставьте Sleep -Seconds 9, сейчас у Вас скрипт выключается и не успевает воспроизвести файл.
Видимо загвоздка у автора именно в Sleep, у меня без всяких -executionpolicy вот такой однострочник сработал:
powershell -Command "& {$s=new-Object System.Media.SoundPlayer; $s.SoundLocation='C:/Windows/Media/tada.wav'; $s.Play(); Sleep -Seconds 9}"

Аккаунт с привилегиями обычного пользователя, не администратор.
У меня без -executionpolicy не работает, говорит что не подписан скрипт. У Вас наверное тоже глобальная настройка безопасности изменена на лояльный уровень? Хотя я наверное пользователь-администратор, так как один в системе.
PS C:\Users\Paul> Get-ExecutionPolicy
Restricted
Возможно у -file и -command разные требования к executionpolicy.
Феерично. Чтобы для проигрывания файла нужно было сначала определить его длительность, а потом дать слип этой длительности — это полный… Извините меня. Неужели никто из разработчиков не подумал о создании хоть какого-то синхронного интерфейса или на крайний случай метода isPlaying(), который можно было бы опрашивать в цикле?
powershell -Command "& {$s=new-Object System.Media.SoundPlayer; $s.SoundLocation='C:/Windows/Media/tada.wav'; $s.PlaySync()}"
Вот это другое дело. Спасибо за просвещение и приношу свои извниения разработчикам :)
P.S. Может быть это заодно и к посту прикрепить?
Дополню ответ. Ключем -executionpolicy устанавливается политика безопасности на один этот запуск. Глобальные настройки безопасности лучше не менять, так что верните обратно: Set-ExecutionPolicy Restricted. :)
Если пользоваться Powershell повседневно то лучше всего установить ExecutionPolicy в RemoteSigned, тогда дома можно будет запускать любые скрипты, а на скачаные будет ругаться.
Зачем sleep, если есть PlaySync
К тому же SoundPlayer задачу не решает, так как не умеет проигрывать mp3, а вот WMPlayer.OCX умеет, к тому же его можно использовать не только из PS, но и из WSH (ну или если очень захочется — из C++ и пр..)
Спасибо за подсказку, PlaySync будет даже лучше. Я не посмотрел в документацию, но подозревал что такой метод есть.
Интересно, WMPlayer.OCX есть в поставке c Windows E (Европейская без WMP)?
Только зачем так сложно с явным созданием промежуточного объекта?

Вот так мне кажется и читается проще и писать меньше

powershell -Command (new-object Media.SoundPlayer "C:\Windows\Media\notify.wav").play(); Sleep -Second 1;
>Попробовал решить задачу новомодным PowerShell

Как-то язык не поворачивается назвать PS «новомодным», это уже зарекомендовавшее себя средство, навороченное и отлаженное, и как следствие применяющееся повсеместно.
а вот я про него только сегодня узнал
И вообще если мы просто системный звук хотим проиграть то вот так будет наиболее кошерно

powershell -Command ([System.Media.SystemSounds]::Beep).Play();
Поправка, еще проще
powershell ([System.Media.SystemSounds]::Beep).Play();
>в системе уже под 20Гб какого то говна чего то полезного, которое зовется операционной системой…
+стопятьсот!

И хотя то что cmd перерастает в PowerShell это радует, но тем не менее мир командной строки надо оставить всевозможным Shell'ам *nix'ов…
RUNDLL32 amovie.ocx,RunDll /play /close \path\to\wave\file.wav

насколько я помню, то в XP это работало без PowerShell и прочего. Сейчас проверить не могу, т.к. уже давно не пользовался Windows. Вообще rundll имеет кучу всяких плюшек.
это всякие dll и прочие ocx имеют кучу плюшек, а rundll лишь умеет их вызывать.
Так mp3-то играет или нет? Или только никому не нужный wav играет?
Увы, нет.
Исключение при вызове «Play» с «0» аргументами: «Файл в папке *** не является волновым файлом.»
А зачем вам mp3? Да еще и из консоли? Если уж очень нужно, то запускайте комбайн WMPlayer, а то консольный интерфейс им подавай! Не напасешься на таких как вы…
«Не напасешься на таких как вы» — на каких?
На которых консольную версию требуют :)

P.S. Я забыл тег irony.
нет, для этого можно поставить mpg123 :)
Вы заголовок этого топика прочитали? «Навеяно q&a: Как воспроизвести mp3 из командной строки в Windows 7?»
Sign up to leave a comment.

Articles