Сайт переехал на новый адрес: //alexcoder.ucoz.ru
На данном адресе новые материалы выкладываться не будут
Также по новому адресу доступен оффлайн архив материалов
Прийдя домой, я заметил, что моё настроение зависит от дня недели. Это понятно. Ведь расписание (школы) - тоже зависит от дня недели.
И что с того? Да, под каждое настроение подходит определённый репертуар музыки. Вот я и решил накодить скрипт, в зависимости от дня недели грузящий разные плейлисты.
Итак, садитесь поудобнее. нам понадобятся :
Power Shell
Windows Media Player
Если PowerShell-а нет то лучше скачать. Судя по всему что я прочёл - исключительно полезная вещь.
В какой-либо папке (русских букв и пробелов в её абсолютном пути и имени быть не должно!) папку AutoMusic. В ней же - playlists.
Теперь открой Power Shell - ISE (это что-то типа IDE для PowerShell скриптов). Вобьём такой код:
Пока он определяет номер дня недели. В папке playlists создай плейлисты 1.m3u-7.m3u, и заполни их. Сейчас пойдёт геморой, т.к. если просто прописать в скрипте F:\Program Files\Windows Media Player\wmplayer.exe (у вас скорее всего C а не F, но суть от этого не меняется), то он будет пытаться запустить F:\Program с папраметром Files\Windows Media Player\wmplayer.
Для нормального запуска плеера я накишмячил такой батник:
Code
@echo off cd F:\Program Files\Windows Media Player echo %* wmplayer.exe %*
Что он делает? А он запускает WMPLAYER с параметром. В конец PostScript-а допишем такой код : [code $currentLocation=Get-Location; $params="$currentLocation\playlists\$ps.m3u"; .\runPlayer.bat $params [/code]
Он определяет, какой плейлист нам запустить (по номеру для недели), и при помощи вышенаписанного батника натравливает плеер на этот плейлист.
Кликните на powershell файле правой кнопкой и в меню выберите "выполнить с помощью PowerShell". Он напишет, что низя.
Причиной этому является то, что по умолчанию выполнение сценариев в PowerShell запрещено. Это сделано специально для предотвращения возможных проблем с безопасностью. По умолчанию после установки вам доступно только выполнение команд в интерактивном режиме. Для защиты пользовательских данных и целостности операционной системы в оболочке Windows PowerShell реализованы некоторые средства обеспечения безопасности, в том числе политика выполнения. Политика выполнения определяет, можно ли выполнять сценарии, и если да, должны ли они быть подписаны цифровой подписью. Кроме того, она определяет, можно ли загружать конфигурационные файлы.
Командой set-executionpolicy мы можем это исправить.
Войдите в PowerShell (уже не в ISE).
В powerShell есть следующие политики безопасности :
Restricted – эта политика выполнения по умолчанию. Допускает отдельные команды, но сценарии выполнять нельзя.
AllSigned – здесь выполнение сценариев разрешено, но необходимо наличие цифровой подписи надежного издателя на всех сценариях и файлах конфигураций, включая сценарии, написанные на локальном компьютере. Также при такой политике запрашивают подтверждение перед выполнением сценариев надежных издателей. Однако при этом существует опасность того, что подписанные, но вредоносные сценарии выполняются.
RemoteSigned – при таком статусе политики выполнение сценариев также разрешено. Необходимо наличие цифровой подписи надежного издателя на всех сценариях и файлах конфигураций, загруженных из Интернета (включая электронную почту и программы мгновенного обмена сообщениями). Нет необходимости в цифровых подписях на сценариях, запускаемых с локального компьютера. Не запрашивают подтверждения перед выполнением сценариев надежных издателей. Подписанные, но вредоносные сценарии также выполняются.
Unrestricted – самая демократичная политика, позволяет запускать неподписанные сценарии. Сценарии и файлы конфигурации, загруженные из Интернета (включая Microsoft Outlook, Outlook Express и Windows Messenger), выполняются после предупреждения, что данный файл был загружен из Интернета. Как и следовало ожидать, при таком статусе также возможно выполнение вредоносных сценариев. Думаю, использование данного статуса политики выполнения возможно только на тестовых машинах, так как в реальных сетях это крайне небезопасно.
В нём я ввёл команду Set-ExecutionPolicy RemoteSigned , но если вы предпочитаете другие политики безопасности, можете использовать их
Теперь наш скрипт должен срабатывать при вызове из контекстного меню.
Для автозагрузки скрипта приюзан такой батник :
Code
@echo off cd F:\Users\alexKniaz\Documents\Scripts\AutoMusic\ F:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe F:\Users\alexKniaz\Documents\Scripts\AutoMusic\script.ps1 pause
Пути у вас, скорее всего будут отличаться. F:\Users\alexKniaz\Documents\Scripts\AutoMusic\ - папка куда мы клали скрипты, а F:\Windows\system32\WindowsPowerShell\v1.0\ - папка где лежит PowerShell.