function main
{
$DIRECTORY='E:\Music';
$count=5;
cd $DIRECTORY;
$foo = Get-ChildItem $DIRECTORY -include *.mp3 -name -recurse;
$list = (Get-Random -input $foo -count $count | Out-String).split("`n");
$out="#EXTM3U"
remove-item "$DIRECTORY\list.m3u";
for ($i=0; $i -lt $list.Length; $i++) {
$name=$list[$i];
if(-not ($name -eq '')){
$out = $out + "`n#EXTINF:300`n$name";
}
}
Write-Output $out | Out-File "$DIRECTORY\list.m3u"
}
main;
PowerShell и *.m3u
Код:
Скрипт должен получить рандомно часть музона из E:\Music, после чего - натравить винамп (пока не делал). При открытии готового плейлиста винампосм тот выводит в плейлисте
Цитата:
1. яю#
блокнот
Цитата:
#EXTM3U#EXTINF:300veter.mp3
#EXTINF:300best-mp3.ru_mavrin_sergei_-_poka_bogi_spyat.mp3
#EXTINF:300nebo_tebya_naidyot.mp3
#EXTINF:300leon_-_metro_2033.mp3
#EXTINF:300vek_moi_zverj.mp3
#EXTINF:300best-mp3.ru_mavrin_sergei_-_poka_bogi_spyat.mp3
#EXTINF:300nebo_tebya_naidyot.mp3
#EXTINF:300leon_-_metro_2033.mp3
#EXTINF:300vek_moi_zverj.mp3
т.е переводы строки частично игнорируются. В чём трабла (кстати когда в хром скопирнул из блокнота - вставло на места), пришло самому привести к начальному виду
Цитата: alex-kniaz
яю
Это BOM-сигнатура. Копайте в сторону кодировок, почти наверняка PS перекодирует файлы в UTF-8.
т.е файл надо перекодировать из PS - кодировки в Winamp-ю, так?
вместо
Код:
$out="#EXTM3U"
...
$out = $out + "`n#EXTINF:300`n$name";
...
Write-Output $out | Out-File "$DIRECTORY\list.m3u"
...
$out = $out + "`n#EXTINF:300`n$name";
...
Write-Output $out | Out-File "$DIRECTORY\list.m3u"
поставил
Код:
...
Write-Output "#EXTM3U" | Out-File $list -encoding DEFAULT
...
Write-Output "#EXTINF:300" | Out-File "$DIRECTORY\list.m3u" -append -encoding DEFAULT;
Write-Output "$name" | Out-File "$DIRECTORY\list.m3u" -append -encoding DEFAULT;
...
Write-Output "#EXTM3U" | Out-File $list -encoding DEFAULT
...
Write-Output "#EXTINF:300" | Out-File "$DIRECTORY\list.m3u" -append -encoding DEFAULT;
Write-Output "$name" | Out-File "$DIRECTORY\list.m3u" -append -encoding DEFAULT;
...
(Get-Random -input $foo -count $count | Out-String).split("`n"); при одинаковом $foo возвращает одни и те же данные. в чём дело?