1 名前:デフォルトの名無しさん mailto:sage [2020/01/01(水) 16:08:31.66 ID:4oQ1Kxot.net] 前スレ PowerShell -Part 3 https://mevius.5ch.net/test/read.cgi/tech/1539074808/ 次スレは>>980 が立ててね!!
862 名前:デフォルトの名無しさん mailto:sage [2021/01/07(木) 08:28:41.55 ID:6ewH2FY0.net] >>854 変数が空の定義次第だけど$nullでよくてPowerShell 7以降なら$hoge ?? 'fuga' でいける 空の定義に空文字を含むとかPowerShell 6以下とかなら素直に if([string]::IsNullOrEmpty($hoge)){ 'fuga' } else { $hoge } とやればいい
863 名前:デフォルトの名無しさん mailto:sage [2021/01/07(木) 08:34:36.49 ID:6ewH2FY0.net] >>856 変数の存在確認ならTest-Path Variable:hogeの方が楽だと思う
864 名前:デフォルトの名無しさん mailto:sage [2021/01/07(木) 13:21:05.91 ID:ht1NLYQc.net] 7って便利なんだな
865 名前:デフォルトの名無しさん mailto:sage [2021/01/07(木) 21:21:38.47 ID:R2rezzh3.net] >>854 >${hoge:-fuga サザエさんかよw
866 名前:デフォルトの名無しさん mailto:sage [2021/01/07(木) 21:59:07.15 ID:o0FdcV6b.net] えっ?
867 名前:デフォルトの名無しさん mailto:sage [2021/01/07(木) 22:43:44.97 ID:IvTx7xdj.net] foo,barも知らない人でしょ
868 名前:デフォルトの名無しさん [2021/01/07(木) 22:50:20.03 ID:iqGL0Mlk.net] ほげふがの語源ってサザエさんだったの!? マジで!
869 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 00:22:33.24 ID:s1r0Khta.net] 来週もまた観てくださいね $hong -or $fouf
870 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 10:41:54.36 ID:zUQduDYO.net] 逆にメタ変数でhoge、fugaってそこまでマイナーか?
871 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 11:27:10.91 ID:3ONG9Jp/.net] >>866 誰もマイナーとか言ってない
872 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 11:53:36.70 ID:zUQduDYO.net] >>867 そうか、それはすまなかった。 早とちりでございました。 お詫び申し上げます。
873 名前:デフォルトの名無しさん [2021/01/08(金) 12:25:26.48 ID:eXVg8SYp.net] >>868 詫びろとは言ってない >>867 誰かがマイナーと言ったとは言ってない >>865 今週観たとは言ってない >>861 ご指摘にはあたらない
874 名前:デフォルトの名無しさん [2021/01/08(金) 12:25:53.52 ID:eXVg8SYp.net] これ万能論法ですな
875 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 12:36:55.29 ID:2lGGPyYq.net] そう思ってるのは言ってる本人だけだろう
876 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 01:01:42.83 ID:KQEfE/JM.net] ※すべてのネットワークアダプタを無効にして、 Get-NetConnectionProfileは必ずエラーになる状態で実行しています。 $result=Get-NetConnectionProfile -InterfaceAlias Wi-Fi 2>$null $? False $result=(Get-NetConnectionProfile -InterfaceAlias Wi-Fi 2>$null) $? True この場合、マル括弧がどんな働きをして 結果が変わってしまうのか教えてください。
877 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 01:03:45.10 ID:KQEfE/JM.net] ちなみにこうしても $result=Get-NetConnectionProfile -InterfaceAlias Wi-Fi エラーメッセージ $? False $result=(Get-NetConnectionProfile -InterfaceAlias Wi-Fi) エラーメッセージ $? True という状態でした。
878 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 08:27:17.19 ID:kPw1IBO3.net] >>872-873 まあバグ(MS的には仕様とも言う)みたいなもんやね Until PowerShell 7, containing a statement within parentheses (...), subexpression syntax $(...) or array expression @(...) always reset $? to True , so that (Write-Error) shows $? as True. This has been changed in PowerShell 7, so that $? will always reflect the actual success of the last command run in these expressions. https://docs.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_automatic_variables?view=powershell-7.1#short-description なのでPowerShellを7にすれば解決するかと
879 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 09:13:27.43 ID:iGxXP/Ic.net] 5.1はメンテしないってことか? OSにデフォで入ってるバージョンなんだから直せよ
880 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 09:49:28.96 ID:kPw1IBO3.net] いきなり直したらユーザースクリプトのバグが顕在化したりするだろ どうでもいいようなスクリプトなら7に上げろよ
881 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 10:38:48.10 ID:amtktMoR.net] どうでもいいスクリプトで問題回避できるなら7に上げなくてもいいんじゃね。
882 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 11:36:00.49 ID:KQEfE/JM.net] >>874 ありがとうございます。 あげるのも怖いので別の方法にします。
883 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 11:45:27.45 ID:vKxQ0OMt.net] >>877 そう言うのは>>875 に言ってやれよ
884 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 16:15:40.54 ID:WaDdsN2m.net] >>878 あげる?のではなくて別物なので併用できるけど。 5.1 → powershell.exe 7.x → pwsh.exe
885 名前:デフォルトの名無しさん mailto:sage [2021/01/10(日) 04:54:33.84 ID:3v4yt86U.net] 以下の表記の意味を教えてください。 void Queue[TResponse](Google.Apis.Requests.IClientServiceRequest request, Google.Apis.Requests.BatchRequest+OnResponse`1[TResponse] callback) メソッドに角カッコ?や、型指定に+や`1[TResponse]の意味がわかりませんでした。 $batch = New-Object Google.Apis.Requests.BatchRequst($service) $batch.Queue で表示される内容です。
886 名前:デフォルトの名無しさん mailto:sage [2021/01/10(日) 08:11:25.80 ID:a907yL+h.net] クラスのメンバーにクラスがある時は+になるんじゃなかったか System.Environment+SpecialFolder みたいな [TResponse]はジェネリックの型引数 `1は型引数を1つ取るって意味
887 名前:881 mailto:sage [2021/01/10(日) 21:15:33.29 ID:3v4yt86U.net] >>882 ありがとうございます。ジェネリックというのは知らなかったので調べてみます。 あと、その、Queue[TResponse]、というメソッドに型が付いている?のもジェネリック関連でしょうか。
888 名前:デフォルトの名無しさん [2021/01/12(火) 16:53:39.85 ID:0UGYDHaB.net] pythonに飲み込まれるってマジ?
889 名前:デフォルトの名無しさん mailto:sage [2021/01/12(火) 18:35:28.45 ID:U7HouJQi.net] pythonが吐血しちゃいますよ
890 名前:デフォルトの名無しさん mailto:sage [2021/01/13(水) 11:04:50.14 ID:u12/DUzm.net] >>884 え?Pythonから.NET Framework扱えるようになるの?
891 名前:デフォルトの名無しさん mailto:sage [2021/01/13(水) 12:04:34.41 ID:JJnXAm01.net] 知らんけど今はまだ使えないの?
892 名前:デフォルトの名無しさん mailto:sage [2021/01/13(水) 12:35:42.75 ID:u12/DUzm.net] ironpythonなら
893 名前:デフォルトの名無しさん mailto:sage [2021/01/16(土) 08:03:53.11 ID:4aouipyb.net] v7.1.1 https://github.com/PowerShell/PowerShell/releases/tag/v7.1.1
894 名前:デフォルトの名無しさん [2021/01/18(月) 22:22:09.29 ID:6Ncg8pZo.net] 【D:\】の全てのフォルダやファイルに対して、作成日時や最終アクセス日時などを設定したいのですが、 PS D:\> Get-ChildItem -Path "D:\" | Where-Object { $_ -is [System.IO.FileInfo] } | ForEach-Object { Set-ItemProperty $_.FullName -Name CreationTime -Value "2021/01/01 00:00:00" } ではエラーが出ます。 何がいけないのでしょうか?
895 名前:デフォルトの名無しさん mailto:sage [2021/01/18(月) 22:59:36.90 ID:Pb59NPOt.net] 例えば特定の一つのファイルやフォルダなら上手く行くとか パイプを分解してどこでエラーになってるのかを突き止めるとか 丸投げするにしてもエラーメッセージ位は出してあげると答える人も喜ぶと思いますよ
896 名前:デフォルトの名無しさん mailto:sage [2021/01/19(火) 02:44:39.14 ID:m3MeBQ6p.net] 1.D:\が存在していない 2.D:\へのアクセス権がない 3.D:\にあるファイルに読み取り専用属性が設定されてるものが混ざってる どれかな? Where-Object { $_ -is [System.IO.FileInfo] }抜き、ファイルに限定しないで実行したときは フォルダへのアクセス時にエクスプローラー開いてると ”別のプロセスで使用されているためアクセスできません”となった(たとえ操作対象のフォルダを開いていなくても) 変更された日時を確認するためにエクスプローラー開いたまま実行してたりする?
897 名前:デフォルトの名無しさん [2021/01/19(火) 21:02:07.64 ID:qrtgnbPs.net] # set the target folder path $targetFolder = 'I:\'; # get all files including files in sub folders $itemList = Get-ChildItem $targetFolder -Recurse; foreach($item in $itemList){ $item.CreationTime = '2020/12/21 00:00:00' } なスクリプトで実行したらエラーなく出来ました。 お騒がせしてすみませんでした。
898 名前:デフォルトの名無しさん mailto:sage [2021/01/19(火) 23:49:36.84 ID:XQEllFmW.net] >>893 >>890 私の環境で実行したら何のエラーもなく、CreationTimeが2021/01/01 00:00:00 になったの。 逆質問だけど、どんなエラーだったのか教えてください。
899 名前:デフォルトの名無しさん mailto:sage [2021/01/20(水) 10:29:40.54 ID:sOzWFlEJ.net] エクスプローラーとか、バックグラウンドで動いているシステムなどが、 フォルダをロックしていたら、失敗する だから、タイミングによって、成功したり失敗したりする 読み取りロックは、読み取り同士では共有できるけど、 書き込みロックは、その他すべてと共有できないから、失敗する確率が高い
900 名前:デフォルトの名無しさん mailto:sage [2021/01/25(月) 21:14:40.94 ID:PMAucoEc.net] v7.0.4 https://github.com/PowerShell/PowerShell/releases/tag/v7.0.4
901 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 19:49:56.64 ID:BJM8Dy5y.net] テキストファイルに設定できるストリームって何に使うんすか?
902 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 21:16:07.96 ID:lPCF/h8Q.net] テキストストリームの事なのかNTFSの代替データストリームの事なのか どちらなんだ
903 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 22:11:57.22 ID:qq3K45Kg.net] 代替データストリームはテキストに限った話じゃないのでは
904 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 22:45:50.85 ID:9akTDBYB.net] テキストに限った話ではないけど、質問者が正確に把握してるともまた限らない
905 名前:デフォルトの名無しさん [2021/01/29(金) 23:59:43.31 ID:t1LR5As2.net] PoweShellのクラスで、C#と同様にインデクサーを定義することはできますか? 例えば、あるクラスのインスタンス$hogeに対して $hoge[$i] という感じで添字でアクセスしたいです。
906 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 14:37:31.38 ID:jsWOzGKR.net] C#の演算子オーバーロードがPSで使えるかと同じ無意味な質問
907 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 16:01:58.79 ID:sgLd3qg+.net] >>902 使えるの?
908 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:07:09.19 ID:Ti7TRi+9.net] >>898 たぶんテキストストリームのことです file:stream1 ↑これ
909 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:24:57.96 ID:x4IKZ5QX.net] そのファイルに付属させたい情報を一緒にいれておくということだろう ソースだったら、開発秘話とか入れとけば?
910 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:26:58.51 ID:x4IKZ5QX.net] あと自分の写真とか連絡先とかプロフィールを入れとけばいいかもW
911 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 19:01:56.87 ID:Ti7TRi+9.net] >>905 >>906 ああREADME.md的なものをですか? なるほどそれは便利そう
912 名前:901 [2021/01/31(日) 19:31:38.13 ID:yFPHlREj.net] >>902 PowerShellでも.Netの コレクションクラスを使えますので、 インデクサーを使うこと自体はできますよね? 同様のことをユーザー定義クラスで実現できないかと思ったのですが、 無意味でしょうか…
913 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 20:11:33.10 ID:IDCaHEld.net] >>904 それ代替データストリームに見えるけどどの辺がテキストストリームなんだろ しかも、NTFSに依存する機能で.mdの代替とか悪手でしかない
914 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 11:36:09.24 ID:XDbQ82ak.net] >>909 結局何に使うのか言ってないじゃん
915 名前:デフォルトの名無しさん [2021/02/04(木) 23:44:34.92 ID:OAJDFKMl5] バカ不平多し★へつらい生きてるからリストラ対象 https://www.youtube.com/watch?v=carOYI-xNoI 勝ちは偶然、負けは必然★負けて消えた人に足りなかったものは? https://www.youtube.com/watch?v=agAQTF1OaBU&t=38s リーダー達の給料が高いのは単純労働者じゃないから https://www.youtube.com/watch?v=8o9il6dVXGk できません、自信がありません、無理です★ボンクラにしたのは誰? https://www.youtube.com/watch?v=54YNXSQsxuM 9割の人は、ただの作業員★自学自習こそ仕事の基本 https://www.youtube.com/watch?v=vIGKDmmBJcs サラリーマン、10年経てばボンクラ説 https://www.youtube.com/watch?v=QdfVJnVuLlY
916 名前:デフォルトの名無しさん [2021/02/05(金) 00:48:27.75 ID:a81hUa+F.net] PowerShellのパイプやリダイレクトは仕様が良くないね。 エンコードせずにバイナリデータのままパイプする従来の方法も選べたほうが良かったね。
917 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 14:45:47.08 ID:PbAzOwWf.net] cmd /c foo `| bar `> baz とでもしておけ
918 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 21:20:19.10 ID:FdcfXC45.net] >>912 これじゃあかんの [byte[]]$bin = cat -encoding byte
919 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 08:02:58.77 ID:xZe5l+zL.net] パイプを使いたいんだよ
920 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 09:37:27.62 ID:ya6+Y4aC.net] パイプカットするの?
921 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 14:28:17.57 ID:0arkAH5a.net] >>915 encoding byteがどういう型が返るか示しただけでもちろんパイプにも使えるけど
922 名前:デフォルトの名無しさん [2021/02/06(土) 23:58:30.54 ID:5Ze23T9D.net] >>913 `| や`>が解説されているマイクロソフト公式ページはどこになりますか? 検索キーワードが記号ばかりなので探し方が分からず困っております。 >>914 私の環境では、以下のエラーが出て動きませんでした。 Get-Content: Cannot process argument transformation on parameter 'Encoding'. 'byte' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method. (Parameter 'name')
923 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 01:02:44.55 ID:hwDwbBnD.net] >>918 '|'はパイプ'>'はリダイレクトで調べれば出てくるよ bashの知識が必要になるな
924 名前:デフォルトの名無しさん [2021/02/07(日) 01:34:59.08 ID:IiZq+u+t.net] >>919 具体的なURLはどこになりますか?
925 名前:デフォルトの名無しさん [2021/02/07(日) 01:38:10.26 ID:IiZq+u+t.net] >>919 検索にbashの知識が必要というのは具体的にどういう意味ですか?
926 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 01:46:34.08 ID:IiZq+u+t.net] ひょっとして>>913 と>>919 は別人なのかな。 もし別人なら>>919 への質問はなかったことにしてください。論点がずれてるようだから。
927 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 07:11:26.49 ID:jVPjdJHk.net] @パターン1 $data = @('red','green','blue') if ( $data -ne 'green' ) { 'greenはありません' } greenはありません Aパターン2 $data = @('red','green','blue') if ( $data -ne 'pueple' ) { 'greenはありません' } greenはありません 両方とも同じ結果を返してしまいます。 配列と比較して、無かったらtrue、あったらfalseみたいな書き方ってありませんか? イメージとしては if ( $data.notContains('green')) みたいな書き方です。 用としては、if ( $data.Contains('green'))で足りるのですが、 気持ちの問題として、無かったらtrue、あったらfalseという書き方をしたいです。 よろしくお願いいたします。
928 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 09:44:27.16 ID:jX/y7Db/.net] >>923 > 両方とも同じ結果を返してしまいます。 まず $data = @('red','green','blue') $data -ne 'green' で何が戻ってくるか確認すればなぜそう言うふうに動くかわかると思う > 気持ちの問題として、無かったらtrue、あったらfalseという書き方をしたいです。 どうしても-eqとか使いたい場合、俺なら($data -eq 'green').Count == 0って書くかな どう見ても$data.Contains('green')の方がわかりやすいと思うけど
929 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 09:58:10.78 ID:fgGFki9a.net] $data = @('red','green','blue') if (not ($data -eq 'green')) {} if (not ($data.Contains('green'))) {} if (not ($data -contains 'green')) {} if ($data -notcontains 'green') {} if ('green' -notin $data) {} -eq演算子はフィルタとして働くのでここでの用法は微妙 -in系の演算子は配列が大きいとオーバーヘッドが大きいらしい
930 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 09:59:45.82 ID:fgGFki9a.net] 否定をtrueにするってどういうことだろ $colors = @('red','green','blue') $found = $data -contains 'green' if ($found) { } else { } なら自然に読み下せる ここで$notFoundという変数を使われると気になる if (not $found) { # 先に書いておきたい処理 } else { # 長々とした本処理 } としたいという趣旨ならわかる
931 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 10:03:05.78 ID:fgGFki9a.net] 変数名を変え忘れたので訂正 $found = $colors -contains 'green'
932 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 10:18:17.21 ID:jVPjdJHk.net] >>924-926 レスありがとうございます。 > 否定をtrueにするってどういうことだろ > どう見ても$data.Contains('green')の方がわかりやすいと思うけど $exec_shinai_jikan=@('01','02','03') $imananji=Get-Date -Format HH if ($exec_shinai_jikan -notcontains $imananji){ "実行するよ" } else { "実行しないよ" } 実際のコード(一部)はこれです。変数名のセンスが独特ですよね・・(By 開発の人、私は開発じゃないです)といわれているので 出すのが恥ずかしかったんです。混乱を生んだようでして申し訳ない。 >で何が戻ってくるか確認すればなぜそう言うふうに動くかわかると思う ・0か0を超える値か ・nullかnullを除く何らかの値か でtrue or falseが決まる感じでしょうか? -notって、-notだけじゃ赤傍線引かれるけどなにがだめなんだと思ったら、-not〜って表現があったんですね。 ありがとうございます。
933 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 10:22:55.16 ID:5sEA4G4p.net] >>919 bashの知識は不要でしょ DOSですらパイプやリダイレクト存在するんだし
934 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 10:24:14.00 ID:fgGFki9a.net] なるほどそういう感じか -not演算子のハイフン書き忘れてた ごめんね
935 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 10:26:29.15 ID:fgGFki9a.net] >>924 ($data -eq 'green').Count -eq 0 これってgreenが含まれない場合は最初の-eq演算による絞り込み結果が$nullになって ぬるぽになるかと思いきや$null.Countの呼び出しは特例的に0を返すんやね またPowershellの妙な癖を覚えてしまった
936 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 11:48:29.36 ID:jX/y7Db/.net] >>931 > これってgreenが含まれない場合は最初の-eq演算による絞り込み結果が$nullになって ならないよ、単に空の配列になるだけ gm -inputobject ($data -eq 'yellow') とかやればわかる
937 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 12:10:49.69 ID:fgGFki9a.net] >>932 ありがとう、勘違いしてた そこは自然な動きなんやね
938 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 13:45:02.08 ID:hwDwbBnD.net] >>920 https://docs.microsoft.com/ja-jp/powershell/ ここでリダイレクトとかパイプとか検索ワードを入れれば解説が出てくるよ
939 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 20:57:33.01 ID:rt2m338a.net] >>914 ,918 6.0で仕様変更された https://docs.microsoft.com/ja-jp/powershell/scripting/whats-new/breaking-changes-ps6?view=powershell-7.1#unify-cmdlets-with-parameter--encoding-to-be-of-type-systemtextencoding-5080 -Encoding の値 Byteはファイルシステム プロバイダーのコマンドレットから削除されました。 新しいパラメーター -AsByteStream を使用して、入力としてバイト ストリームが必要なこと、あるいは出力がバイト ストリームであることを指定してください。
940 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 10:00:24.88 ID:hefdb5Yb.net] 可変長配列数?的なものの実現方法を教えてください。 CSVを以下の通り加工したいのですが、 1554412,A,B,C,D 2176944,D,C,E,F,G,H,I,J 4887447,F,H,J,A,K こんな感じのカンマ区切りcsvを 1554412,A 1554412,B 1554412,C 1554412,D 以下同じパターン で成形したいのです。 csv区切り文字は必ずカンマで、 フィールド数は行により異なります。 行を読み込んで、配列に入れて〜、配列の最初のフィールドを入れて〜 とぼんやり想像しているのですが、「個数が定まっていない行を、配列に入れる方法」が想像つきません。 可変長配列数?的なものの実現方法を教えてください。
941 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 18:12:00.38 ID:hRqw8VTE.net] 2つ目のカンマ or 改行まで読んでから要素数2の固定長配列に入れるのはどうですか。 エレガントな方法ではないと思うので、他の方の意見も参考にしてください
942 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 18:19:41.40 ID:hRqw8VTE.net] あ、A, D, FじゃなくてA, B, Cでしたか。 マルチバリューカラムになっているのを正規化したいんですね。 最初の一つ目だけ取るのと勘違いしてました。 1. 一行読んでstring 2. カンマでstring.splitしてstring[] 3. [1]からstring.lengthまでを、[0]とstring.joinして、string[] 4. 全行ループ これでどうですか
943 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 19:17:13.97 ID:JrOSOdLx.net] PowerShell っぽくならこんな感じかな '1554412,A,B,C,D', '2176944,D,C,E,F,G,H,I,J', '4887447,F,H,J,A,K' | %{ $a, $b = $_ -split ',', 2 $b -split ',' | %{ "$a,$_" } }
944 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 19:51:01.55 ID:hRqw8VTE.net] どうしてこれ動かないの? $fが更新されない スマホでコード書くの疲れたんで、誰か教えて下さい。 https://tio.run/##TY3LCsIwEEX38xVDyEJxLEaiVUHw/cYfkC5EUluoqTRFreK316kguBm4hzn3XtO7yVxkkqQs5cPhEEcCVKejtWrTmCY0pRm0ld/ta00zTnNa0JJWtKYN6F7P19pnsqINf29BjLDprkmcozjM7S3OUnsxNg8Gg72572JrBECYZuZ4irAmHxhb5NU6vkAW1Tijn08CZFihwh1awZ9VfC2myvM4OW9n7DmPmqoefIuelRRio6rgKwtG8IZ3WX4A
945 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 21:07:38.33 ID:bnTPmcqs.net] >>940 $xs[0]としてごらん 5行目"@ -split "`n"で意図通りになると思う
946 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 21:45:54.25 ID:JrOSOdLx.net] >>940 "[Environment]::NewLine" ↓ "$([Environment]::NewLine)"
947 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 21:58:58.82 ID:hefdb5Yb.net] >>938 とりあえず用は足せました。が、多分ご紹介の内容と全然違うことをやってると思います。 レスの内容が半分分かりませんでした。 >3. [1]からstring.lengthまでを ここが猛烈にヒントになってこんな感じにしました。 foreach ($l in Get-Content C:\temp\test.txt) { $l=$l.Split(",") 1..(($l.Length) - 1) | % {write-host ($l[0],$l[$_]) } } サンプルのコードをいただけると幸いです。 >>939 これも無事動きました。ありがとうございます。 %ってのを知りませんでした。 Powershell難しすぎです。 勉強してるんですが、正直心折れそうです。 bashはそこそこ使えるので行けるだろと思ってたんですが、ナメてました。 死にそうです。
948 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 22:00:44.14 ID:hefdb5Yb.net] >>943 自己レスすいません。 これも結局、 write-host ($l[0],$l[$_]) } で間をカンマ区切りにしたかったんですけど、 1時間手を変え品を変えで結局ダメでした。 何が悪いんでしょうか。
949 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 22:12:55.91 ID:hefdb5Yb.net] 何度もすいません。 write-hostで標準で区切り文字が半角スペースになってるという事実がやっとわかりました。 {write-host -Separator "," $l[0]$l[$_]} で無事に希望の出力を得ることができました。 ありがとうございました。
950 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 00:08:14.80 ID:lj0aoxL+.net] すっきり書けなくてもどかしい $csv -split "\r\n" | % { $a = $_ -split ','; $a[1..($a.Count - 1)] } | % { $a[0], $_ -join ',' }
951 名前:デフォルトの名無しさん [2021/02/11(木) 02:23:21.20 ID:VegncXCD+] SIer業界がブラックな理由を解説する。エンジニアは自社開発をしているWeb業界がオススメ! https://www.youtube.com/watch?v=iy4nnAI9og4 【業界研究】IT業界でひと括りにするのは危険。SIer、Web制作、 アプリ開発で仕事内容が全く違います。【就活・転職】 https://www.youtube.com/watch?v=_IJQ2iBkf4w エンジニアの仕事が稼げる理由とは?プログラミングスキルと 仕事の需要は比例しないので、実は技術力が低くても稼ぐことができる! https://www.youtube.com/watch?v=82Bs-NH8jAM 通勤時間が長い人ほど無能説。家賃節約とか言っている暇があったら、 会社の近くに引っ越して浮いた時間に副業したほうがお金も貯まるし強くなれる。 https://www.youtube.com/watch?v=mt6K1RJnk6I プログラミングに英語は必要か?に対する明確な答え https://www.youtube.com/watch?v=WWULJbVECKU 私がヤフーを辞めた理由 https://www.youtube.com/watch?v=-G-7Hc3rJw8 ITエンジニアの種類と必要なスキル ?アプリケーションエンジニア編? https://www.youtube.com/watch?v=K9BaS2eBGmw 日本と海外のプログラマーの違いを比較してみた https://www.youtube.com/watch?v=u1OyelvNqM0
952 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 19:38:29.26 ID:rrBqcjKj.net] >>940 newlineにクォートつけてたわw >> 940, 941 さんthx 一応quote外した結果。 https://tio.run/##TY3dCoJAEIXv5ykG2YuiUdrY0oKg/396gfAiYk3B1nClsujZbYwuuhk4H/Odc83uOrexTtOqEg@LQxw5ILtdpWSHxjShKc2gI/1eXymacZrTgpa0ojVtQAWBr5TPZEUb/t6CM0LXXtOkwMPc3JI8MxdtinAw2Ov7LjEaIMpyfTzF2BAPTAzyZhNfIMp6mtHPdsgBEdWotId2@GeVX4up9DxO1ttpcy5iVzbDb9GzliJs1RV8RckI3vCuqg8
953 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 09:16:23.07 ID:q/2+I+Zd.net] $?で直前のコマンドの実行結果を知ることができますが、 直前に実行したコマンドのPIDを知る方法ってありませんか? Start-Process -FilePath c:\bin\command.exe -ArgumentList 1 $cmd1pid=get-chokuzenn-pid $cmd1pid 78968 Start-Process -FilePath c:\bin\command.exe -ArgumentList 2 $cmd1pid=get-chokuzenn-pid $cmd1pid 4292 実際に動かしたいのは、ttpmacro.exe(Teratermのマクロ)です。 Teratemマクロで外部の機器にsshで接続して、ssh接続のログの内容を見て そのプロセスを終了させるか判断したいと思っております 書こうとしているスクリプトを動かす時点で、1個もTeratermが動いていないなら、 Get-Processでなんとかなると思うのですが、上記スクリプトを実行する時点で ほかのTeratermが動いている可能性があり、それを間違って死なすわけにはいかず、 Powershellスクリプト内で、Start-Processなりで動かした、直前のプロセスのIDを知る方法があればと思い相談させていただきます すいません、よろしくお願いいたします。
954 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 09:17:40.74 ID:q/2+I+Zd.net] test.ps1 Start-Process -FilePath c:\bin\command.exe -ArgumentList 1 $cmd1pid=get-chokuzenn-pid $cmd1pid 78968 Start-Process -FilePath c:\bin\command.exe -ArgumentList 2 $cmd2pid=get-chokuzenn-pid $cmd2pid 4292 すいません、スクリプトの例に誤りがありました 訂正します
955 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 09:57:59.46 ID:JWXF4JEZ.net] v7.0.5 https://github.com/PowerShell/PowerShell/releases/tag/v7.0.5 v7.1.2 https://github.com/PowerShell/PowerShell/releases/tag/v7.1.2
956 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 10:15:49.19 ID:JXvYdGCL.net] 引数に -PassThru を付けて戻り値からidで取れないかな?
957 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 11:17:25.75 ID:jxDcSv/l.net] >>949 プロセスIdなんて取る必要ない(むしろ危険) >>952 が言うように-PassThruオプションつけるとSystem.Diagnostics.Processオブジェクトが返ってくるからKill()メソッド呼ぶだけでいい
958 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 13:51:19.53 ID:q/2+I+Zd.net] >>952 >>953 $process = Start-Process -PassThru notepad $process.Kill() できました ありがとうございました
959 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 13:58:44.73 ID:aXMNNeBu.net] すばらしい
960 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 18:04:24.59 ID:elIMNXvv.net] 音楽プレーヤーで MP3 ファイルをシャッフル再生させたいので、 dir /n /-b /s *.mp3 > playlist.txt の結果をランダムに入れ替えるにはどうすればいいでしょうか? (乱数で再生する行を求めると同じ曲がつづくかもしれないのでシャッフルにしたい。)
961 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 19:45:47.08 ID:PYtZn7CJ.net] >>956 テキトーでいいなら dir /n /-b /s *.mp3 | sort -prop @{Exp={[Guid]::NewGuid()}} > playlist.txt
962 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 20:59:17.73 ID:9JYy97c0.net] Sort-Object {Get-Random}じゃあかんの?