■ このスレッドは過去ログ倉庫に格納されています
PowerShell -Part 4
- 1 :デフォルトの名無しさん:2020/01/01(水) 16:08:31.66 ID:4oQ1Kxot.net
- 前スレ
PowerShell -Part 3
https://mevius.5ch.net/test/read.cgi/tech/1539074808/
次スレは>>980が立ててね!!
- 955 :デフォルトの名無しさん:2021/02/12(金) 13:58:44.73 ID:aXMNNeBu.net
- すばらしい
- 956 :デフォルトの名無しさん:2021/02/13(土) 18:04:24.59 ID:elIMNXvv.net
- 音楽プレーヤーで MP3 ファイルをシャッフル再生させたいので、
dir /n /-b /s *.mp3 > playlist.txt
の結果をランダムに入れ替えるにはどうすればいいでしょうか?
(乱数で再生する行を求めると同じ曲がつづくかもしれないのでシャッフルにしたい。)
- 957 :デフォルトの名無しさん:2021/02/13(土) 19:45:47.08 ID:PYtZn7CJ.net
- >>956
テキトーでいいなら
dir /n /-b /s *.mp3 | sort -prop @{Exp={[Guid]::NewGuid()}} > playlist.txt
- 958 :デフォルトの名無しさん:2021/02/13(土) 20:59:17.73 ID:9JYy97c0.net
- Sort-Object {Get-Random}じゃあかんの?
- 959 :デフォルトの名無しさん:2021/02/13(土) 21:06:22.08 ID:PYtZn7CJ.net
- >>958
それでもいいけど、遅いらしい
https://aquasoftware.net/blog/?p=612
- 960 :デフォルトの名無しさん:2021/02/13(土) 21:14:23.98 ID:D/l9Txdy.net
- 自分の音楽コレクションのプレイリスト作る要件なら速度は別にと思わなくもない
5分とか掛かるならちょとやだけど
- 961 :デフォルトの名無しさん:2021/02/13(土) 21:58:32.75 ID:WEbw7iAW.net
- プレイリストのランダム再生機能ぐらい大抵のプレイヤーに付いてるだろうに
- 962 :デフォルトの名無しさん:2021/02/13(土) 22:34:07.74 ID:XvWS5Qrl.net
- >>959 のリンク先のコードで質問です
勉強のためちょこちょこ編集してみたところ、
「なんでこれで変数の中がランダムにおきかわるの?」と疑問がわきました
$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〜で置き換えるというのなら納得がいくんですが、
なぜ、後者のように、書いてもランダムになるのかが納得いきません
変数定義はパイプの前の話で、どうしてそれがパイプ先の、ランダムにする操作で置き換わるのでしょうか。
- 963 :デフォルトの名無しさん:2021/02/13(土) 22:48:16.31 ID:PYtZn7CJ.net
- >>962
やってることは同じで結果が単に$foo[0]に入ってるだけ
$foo[1]~$foo[9] の内容は変わってないはず
ちなみに置き換えてるわけじゃなくて新しい配列を作ってそれを$rとか$foo[0]に入れてる
- 964 :デフォルトの名無しさん:2021/02/13(土) 22:59:06.67 ID:XvWS5Qrl.net
- >>963
ありがとうございます
書き方が違うけど処理が同じというとらえ方でいいですか?
"パターン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のようなとらえ方でいいでしょうか?
- 965 :デフォルトの名無しさん:2021/02/13(土) 23:33:24.56 ID:PYtZn7CJ.net
- >>964
ああ、すまん ( ) は見落としてた
パターン1は単に式を ( ) で包んでるだけだからパターン2と同じと思っていい
- 966 :954:2021/02/13(土) 23:36:43.19 ID:elIMNXvv.net
- 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()}}
でうまくいきそうです。 ありがとうございました。
- 967 :デフォルトの名無しさん:2021/02/14(日) 00:07:20.96 ID:rA0IJrKX.net
- >>965
ありがとうございますよくわかりました
パイプで処理がわかれると思っておりましたが、
=で右辺と左辺に分ててる感じなんですね
- 968 :デフォルトの名無しさん:2021/02/14(日) 00:22:33.69 ID:D24G58JB.net
- >>966
上手く行って何より
蛇足だけど
> foreach {$_.FullName}
の所は PowerShell 的には
> Select-Object FullName
でもいいかな
- 969 :デフォルトの名無しさん:2021/02/14(日) 00:28:18.02 ID:D24G58JB.net
- >>967
他の言語に似せるためか代入文は最優先で解釈されるようになってるみたい
まあよくわからなかったら多少余分でも ( ) を付けといた方があとから見ても誤解されにくいと思う
- 970 :デフォルトの名無しさん:2021/02/19(金) 08:22:42.85 ID:islL1Ifn.net
- Announcing the PowerShell Community Blog
https://devblogs.microsoft.com/powershell-community/announcing-the-powershell-community-blog/
- 971 :デフォルトの名無しさん:2021/02/22(月) 04:45:12.99 ID:xcCpjLov9
- 高度IT人材、富士通は最大年収3500万円へ
https://www.nikkei.com/article/DGXMZO58248520Q0A420C2000000/
「富士通年収3500万!」日本のIT企業の年収も、高額化してきました
https://needs-explorer.co.jp/5801/
AI人材の獲得に超本気 NECが新人事制度を9人に適用、富士通は最大年収3500万円へ
http://sierblog.com/archives/1994846.html
【年収3500万円も】富士通、「ジョブ型」人事制度を導入 幹部社員から 高度IT人材
https://coinmap.jp/archives/56639
東芝、幹部候補をスタートアップに出向 21年度から
https://www.nikkei.com/article/DGXZQODZ284AV028122020000000
スタートアップで「武者修行」、村田製作所など導入
https://www.nikkei.com/article/DGXMZO6588293005112020LKA000
「スタートアップ点火」中部から世界 名古屋支社シンポ
https://www.nikkei.com/article/DGXZQOFD087YN008122020000000
インフルエンサーによる独自製品開発やブランド構築を支援するGenflowは英BGFから11.4億円調達
https://jp.techcrunch.com/2021/01/21/2021-01-20-genflow/
本業より副業で稼ぐ「パワフル副業者」急増で企業に求められる新しい組織づくり
https://dime.jp/genre/1076364/
- 972 :デフォルトの名無しさん:2021/02/23(火) 08:20:29.72 ID:XBzTqCMZ.net
- posh-git と GetChildItemColor
でダイブましになった
他にもおすすめあったらおせーて!
- 973 :デフォルトの名無しさん:2021/02/23(火) 20:50:03.67 ID:8GGn/OTs.net
- GetChildItemColorを入れるとシンボリックリンクのリンク先のパスが表示されなくなるのがクソ
- 974 :デフォルトの名無しさん:2021/03/02(火) 00:20:13.77 ID:NQgDi+il.net
- #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パラメータの区切りをカンマで無くスペースにする方法があれば教えてください。
ググってみたのですが、ググり方が悪いのか、見つからず苦しんでおります
- 975 :デフォルトの名無しさん:2021/03/02(火) 00:22:05.89 ID:NQgDi+il.net
- >>974
行数制限に引っかかったので分割します。
@は引数〇個、パラメーター名foo、パラメーターfooの数、fooが1個以上(0はだめ)というのをチェックしたいです。
なにとぞよろしくお願いいたします。
- 976 :デフォルトの名無しさん:2021/03/02(火) 10:00:39.98 ID:TaWWQOJL.net
- >>975
about_Functions_Advanced_Parameters
https://docs.microsoft.com/ja-jp/previous-versions/windows/powershell-scripting/hh847743(v=wps.640)
- 977 :デフォルトの名無しさん:2021/03/02(火) 23:49:57.97 ID:NQgDi+il.net
- >>976
ありがとうございます。
読み解くのに時間がかかりそうですが、
希望のものが書いてありそうです。
- 978 :デフォルトの名無しさん:2021/03/03(水) 03:07:24.22 ID:hWQCqBl5.net
- そもそもPowerShellの関数(コマンドレット)は空白区切りで引数渡すんだけどね
>>974はカンマ区切りで引数を渡してるんじゃなくて、カンマで作った配列を渡してるだけ
自動変数の$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 に渡される
特にオプションを指定しなければ、複数の引数を設定すれば空白区切りで渡せる
- 979 :デフォルトの名無しさん:2021/03/12(金) 15:14:39.63 ID:VgGpSMHu.net
- PowerShell起動すると毎回更新しろって出るのがウザくて7入れてみたけど起動時の立ち上がりが遅くなって切れそう
しかも結局help云々が毎回出るし
MS頭おかしいんでねーの
- 980 :デフォルトの名無しさん:2021/03/12(金) 19:40:18.23 ID:gsxqF2ed.net
- おバカ自慢要らね
- 981 :デフォルトの名無しさん:2021/03/13(土) 10:00:11.18 ID:fu8qQk1O.net
- v7.0.6
https://github.com/PowerShell/PowerShell/releases/tag/v7.0.6
v7.1.3
https://github.com/PowerShell/PowerShell/releases/tag/v7.1.3
- 982 :デフォルトの名無しさん:2021/03/13(土) 14:33:26.87 ID:LuYPD+lh.net
- | 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っぽい書き方があったら教えてください
- 983 :デフォルトの名無しさん:2021/03/13(土) 14:59:52.96 ID:4/YYKqK7.net
- >>982
ワンライナーにこだわっているのか?
- 984 :デフォルトの名無しさん:2021/03/13(土) 15:31:11.30 ID:33EHGK5P.net
- Ruby の3項演算子みたいなものは無いの?
真偽値となる条件式 ? 真の時の値 : 偽の時の値
- 985 :デフォルトの名無しさん:2021/03/13(土) 15:36:01.07 ID:ErfpRTBJ.net
- (gsv adobe*).status -contains 'running'
- 986 :デフォルトの名無しさん:2021/03/13(土) 15:48:12.79 ID:Qa5+c/Kf.net
- >>982
[int][bool](Get-Service | Where-Object {($_.Name -Match 'Adobe') -and ($_.Status -Match 'Running')})
- 987 :デフォルトの名無しさん:2021/03/13(土) 20:59:36.95 ID:3roljCwu.net
- >>984
三項演算子
https://docs.microsoft.com/ja-jp/powershell/scripting/whats-new/what-s-new-in-powershell-70#ternary-operator
- 988 :デフォルトの名無しさん:2021/03/14(日) 15:40:02.21 ID:am3+IzSP.net
- PowerShellは処理の方法が多くていいな
- 989 :デフォルトの名無しさん:2021/03/14(日) 21:46:47.24 ID:8YYOAayf.net
- 連想配列の参照渡しで
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' の引数変換を処理できません。引数には参照型を指定する必要があります。
何が悪いん?ググっても見つけられなくてさっきから悩んでる(汗
- 990 :デフォルトの名無しさん:2021/03/14(日) 21:55:49.94 ID:8nGQn8Lf.net
- 括弧とカンマいらないのでは
- 991 :デフォルトの名無しさん:2021/03/14(日) 22:41:43.33 ID:T+RcbFBu.net
- f ([ref]$h) $s
- 992 :デフォルトの名無しさん:2021/03/14(日) 23:07:21.02 ID:8YYOAayf.net
- >>991
出来た!ありがとう
でもなぜその書き方になるのかわからない(汗
- 993 :デフォルトの名無しさん:2021/03/15(月) 15:30:15.42 ID:2OtrSpOH.net
- カッコとカンマで引数渡すのはオブジェクトのメソッドの時だけだね
関数はスペース区切りで渡す
これは文法だから理由はない
- 994 :デフォルトの名無しさん:2021/03/15(月) 16:45:16.26 ID:bRJV5TtK.net
- 1, 2 で配列作っちゃうようにしちゃったからねぇ
記法がシェルスクリプトとプログラム言語のあいの子みたいになってるからちょっと直感に反する所がちらほら見え隠れするのはしょうがない
- 995 :デフォルトの名無しさん:2021/03/16(火) 23:02:58.87 ID:Bd62bkLQ.net
- >>988
処理の方法が多いことは、可読性が落ちる原因にもなる。
PythonをもちあげてPerlをくさす時に使われたのと同じ論法だよ。
- 996 :デフォルトの名無しさん:2021/03/17(水) 08:00:24.75 ID:EzeD0xtp.net
- 俺がPowerShellを気に入ったのはPerlと同じ匂いを感じたからだ
- 997 :デフォルトの名無しさん:2021/03/17(水) 08:19:50.03 ID:vnLGIRIV.net
- しかしPerlではないのがいいところ
- 998 :デフォルトの名無しさん:2021/03/17(水) 08:38:00.89 ID:sqd1XF3h.net
- 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.
- 999 :デフォルトの名無しさん:2021/03/17(水) 11:52:58.50 ID:eAjGywmP.net
- interactive性は'標準で'エイリアスが定義されてることで十分満足してる
- 1000 :デフォルトの名無しさん:2021/03/18(木) 00:08:54.40 ID:t06qOp3P.net
- PerlとPythonは文字に対するencode, decodeの意味が逆。まめな
- 1001 :デフォルトの名無しさん:2021/03/18(木) 00:30:47.74 ID:/MpReTiX.net
- PowerShell -Part 5
https://mevius.5ch.net/test/read.cgi/tech/1615994992/
次スレ。
- 1002 :デフォルトの名無しさん:2021/03/18(木) 00:39:40.12 ID:3weRgygV.net
- >>1001
ナイス滑り込み
- 1003 :デフォルトの名無しさん:2021/03/18(木) 01:34:48.09 ID:dIgskCmL.net
- 質問良いですか
- 1004 :2ch.net投稿限界:Over 1000 Thread
- 2ch.netからのレス数が1000に到達しました。
総レス数 1004
320 KB
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★