X



PowerShell -Part 4
レス数が1000を超えています。これ以上書き込みはできません。
0954デフォルトの名無しさん
垢版 |
2021/02/13(土) 18:04:24.59ID:elIMNXvv
音楽プレーヤーで MP3 ファイルをシャッフル再生させたいので、
dir /n /-b /s *.mp3 > playlist.txt
の結果をランダムに入れ替えるにはどうすればいいでしょうか?

(乱数で再生する行を求めると同じ曲がつづくかもしれないのでシャッフルにしたい。)
0958デフォルトの名無しさん
垢版 |
2021/02/13(土) 21:14:23.98ID:D/l9Txdy
自分の音楽コレクションのプレイリスト作る要件なら速度は別にと思わなくもない
5分とか掛かるならちょとやだけど
0959デフォルトの名無しさん
垢版 |
2021/02/13(土) 21:58:32.75ID:WEbw7iAW
プレイリストのランダム再生機能ぐらい大抵のプレイヤーに付いてるだろうに
0960デフォルトの名無しさん
垢版 |
2021/02/13(土) 22:34:07.74ID:XvWS5Qrl
>>957 のリンク先のコードで質問です
勉強のためちょこちょこ編集してみたところ、
「なんでこれで変数の中がランダムにおきかわるの?」と疑問がわきました

$r = @(1,2,3,4,5,6,7,8,9,10)
$r=($r | sort -Property @{Exp={[Guid]::NewGuid()}})
$r

$foo = @(1,2,3,4,5,6,7,8,9,10)
$foo[0] = $foo | sort -prop @{Exp={[Guid]::NewGuid()}}
$foo[0]

前者のように、$rの中身を $r | sort -Prop〜で置き換えるというのなら納得がいくんですが、
なぜ、後者のように、書いてもランダムになるのかが納得いきません
変数定義はパイプの前の話で、どうしてそれがパイプ先の、ランダムにする操作で置き換わるのでしょうか。
0961デフォルトの名無しさん
垢版 |
2021/02/13(土) 22:48:16.31ID:PYtZn7CJ
>>960
やってることは同じで結果が単に$foo[0]に入ってるだけ
$foo[1]~$foo[9] の内容は変わってないはず
ちなみに置き換えてるわけじゃなくて新しい配列を作ってそれを$rとか$foo[0]に入れてる
0962デフォルトの名無しさん
垢版 |
2021/02/13(土) 22:59:06.67ID:XvWS5Qrl
>>961
ありがとうございます
書き方が違うけど処理が同じというとらえ方でいいですか?

"パターン1"
$foo = @(1,2,3,4,5,6,7,8,9,10)
$foo=($foo | sort -prop @{Exp={[Guid]::NewGuid()}})
$foo

"パターン2"
$foo = @(1,2,3,4,5,6,7,8,9,10)
$foo = $foo | sort -prop @{Exp={[Guid]::NewGuid()}}
$foo

パターン1の書き方違いが、パターン2のようなとらえ方でいいでしょうか?
0963デフォルトの名無しさん
垢版 |
2021/02/13(土) 23:33:24.56ID:PYtZn7CJ
>>962
ああ、すまん ( ) は見落としてた
パターン1は単に式を ( ) で包んでるだけだからパターン2と同じと思っていい
0964954
垢版 |
2021/02/13(土) 23:36:43.19ID:elIMNXvv
Get-ChildItem -path d:\ -filter *.mp3 -recurse | foreach {$_.FullName} | sort {Get-Random}
や、
Get-ChildItem -path d:\ -filter *.mp3 -recurse | foreach {$_.FullName} | sort -prop @{Exp={[Guid]::NewGuid()}}

でうまくいきそうです。 ありがとうございました。
0965デフォルトの名無しさん
垢版 |
2021/02/14(日) 00:07:20.96ID:rA0IJrKX
>>963
ありがとうございますよくわかりました

パイプで処理がわかれると思っておりましたが、
=で右辺と左辺に分ててる感じなんですね
0966デフォルトの名無しさん
垢版 |
2021/02/14(日) 00:22:33.69ID:D24G58JB
>>964
上手く行って何より

蛇足だけど
> foreach {$_.FullName}
の所は PowerShell 的には
> Select-Object FullName
でもいいかな
0967デフォルトの名無しさん
垢版 |
2021/02/14(日) 00:28:18.02ID:D24G58JB
>>965
他の言語に似せるためか代入文は最優先で解釈されるようになってるみたい
まあよくわからなかったら多少余分でも ( ) を付けといた方があとから見ても誤解されにくいと思う
0969デフォルトの名無しさん
垢版 |
2021/02/23(火) 08:20:29.72ID:XBzTqCMZ
posh-git と GetChildItemColor
でダイブましになった

他にもおすすめあったらおせーて!
0970デフォルトの名無しさん
垢版 |
2021/02/23(火) 20:50:03.67ID:8GGn/OTs
GetChildItemColorを入れるとシンボリックリンクのリンク先のパスが表示されなくなるのがクソ
0971デフォルトの名無しさん
垢版 |
2021/03/02(火) 00:20:13.77ID:NQgDi+il
#test.ps1
param([array]$foo)

echo ('$ARGS[0]' +':'+ $ARGS[0])
echo ('$foo[0]' +':'+ $foo[0])
echo ('$foo[1]' +':'+ $foo[1])
echo ('$foo[2]' +':'+ $foo[2])

PS> .\test.ps1 aaa -foo bbb,ccc,ddd
$ARGS[0]:aaa
$foo[0]:bbb
$foo[1]:ccc
$foo[2]:ddd

PS> .\test.ps1 aaa -bar bbb,ccc,ddd
$ARGS[0]:-bar
$foo[0]:aaa
$foo[1]:
$foo[2]:

PS C:\script>
PS> \test.ps1 aaa
$ARGS[0]:
$foo[0]:aaa
$foo[1]:
$foo[2]:

@引数やパラメータの数、パラメーター名などのエラーをチェックする方法を教えてください。
Aパラメータの区切りをカンマで無くスペースにする方法があれば教えてください。

ググってみたのですが、ググり方が悪いのか、見つからず苦しんでおります
0972デフォルトの名無しさん
垢版 |
2021/03/02(火) 00:22:05.89ID:NQgDi+il
>>971
行数制限に引っかかったので分割します。

@は引数〇個、パラメーター名foo、パラメーターfooの数、fooが1個以上(0はだめ)というのをチェックしたいです。

なにとぞよろしくお願いいたします。
0974デフォルトの名無しさん
垢版 |
2021/03/02(火) 23:49:57.97ID:NQgDi+il
>>973
ありがとうございます。
読み解くのに時間がかかりそうですが、
希望のものが書いてありそうです。
0975デフォルトの名無しさん
垢版 |
2021/03/03(水) 03:07:24.22ID:hWQCqBl5
そもそもPowerShellの関数(コマンドレット)は空白区切りで引数渡すんだけどね
>>971はカンマ区切りで引数を渡してるんじゃなくて、カンマで作った配列を渡してるだけ
自動変数の$args(配列)はjavascriptでいう残余引数みたいな物

PS> .\test.ps1 aaa -foo bbb,ccc,ddd
名前付き引数 $foo に配列 bbb,ccc,ddd が渡され、未定義の aaa が $args に渡されてる

PS> .\test.ps1 aaa -bar bbb,ccc,ddd
$foo に先頭の引数 aaa が渡され、未定義の -bar と配列 bbb,ccc,ddd が $args に渡される

特にオプションを指定しなければ、複数の引数を設定すれば空白区切りで渡せる
0976デフォルトの名無しさん
垢版 |
2021/03/12(金) 15:14:39.63ID:VgGpSMHu
PowerShell起動すると毎回更新しろって出るのがウザくて7入れてみたけど起動時の立ち上がりが遅くなって切れそう
しかも結局help云々が毎回出るし
MS頭おかしいんでねーの
0979デフォルトの名無しさん
垢版 |
2021/03/13(土) 14:33:26.87ID:LuYPD+lh
| where-objectで、条件に引っかかったら0(True)、引っかからなかったら1(False)を返す方法ってありませんでしょうか。

あるサービスの実行状態を知るために、こういうことをしてるんですが、

(Get-Service | Where-Object -Property Name -Match Adobe | Where-Object -Property Status -Match Running).length
1 ←AdobeがRunnningだった
0 ←AdobeがRunningじゃなかった

他に、もっとPowershellっぽい書き方があったら教えてください
0980デフォルトの名無しさん
垢版 |
2021/03/13(土) 14:59:52.96ID:4/YYKqK7
>>979
ワンライナーにこだわっているのか?
0981デフォルトの名無しさん
垢版 |
2021/03/13(土) 15:31:11.30ID:33EHGK5P
Ruby の3項演算子みたいなものは無いの?

真偽値となる条件式 ? 真の時の値 : 偽の時の値
0986デフォルトの名無しさん
垢版 |
2021/03/14(日) 21:46:47.24ID:8YYOAayf
連想配列の参照渡しで
function f([ref]$h) { $h.value }
$h = @{ a = 0; b = 1}
f([ref]$h)
はうまくいくんだけど、引数もう一個増やして
function f([ref]$h, $s) { $h.value; $s }
$h = @{ a = 0; b = 1}
$s = 2
f([ref]$h, $s)
にすると、
f : パラメーター 'h' の引数変換を処理できません。引数には参照型を指定する必要があります。
何が悪いん?ググっても見つけられなくてさっきから悩んでる(汗
0990デフォルトの名無しさん
垢版 |
2021/03/15(月) 15:30:15.42ID:2OtrSpOH
カッコとカンマで引数渡すのはオブジェクトのメソッドの時だけだね
関数はスペース区切りで渡す

これは文法だから理由はない
0991デフォルトの名無しさん
垢版 |
2021/03/15(月) 16:45:16.26ID:bRJV5TtK
1, 2 で配列作っちゃうようにしちゃったからねぇ
記法がシェルスクリプトとプログラム言語のあいの子みたいになってるからちょっと直感に反する所がちらほら見え隠れするのはしょうがない
0992デフォルトの名無しさん
垢版 |
2021/03/16(火) 23:02:58.87ID:Bd62bkLQ
>>985
処理の方法が多いことは、可読性が落ちる原因にもなる。
PythonをもちあげてPerlをくさす時に使われたのと同じ論法だよ。
0995デフォルトの名無しさん
垢版 |
2021/03/17(水) 08:38:00.89ID:sqd1XF3h
Why did you do that? $VAR/ {} / Weak Intellisense
https://docs.microsoft.com/en-us/archive/blogs/monad/why-did-you-do-that-var-weak-intellisense

The $ in front of variables comes from our design center of being an interactive command oriented shell.
Interactive shells are NOT the same thing as Scripting languages with command interpretors.
Interactive shells are case studies in engineering tradeoffs (another way of saying that is that they tend to be a little quirky).
There is a tension between the needs of a great interactive experience and a great scripting/programming experience.
Time and time again during the course of the project, people would try to make us "choose" between one or the other.
We refused.

We believe that if you work hard enough at it, you can solve the puzzle and provide a great solution for both.
We were absolutely subborn on this point. Time and time again, we were able to succeed with this approach if we travailed long enough.
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 441日 9時間 26分 17秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

ニューススポーツなんでも実況