前スレ
PowerShell -Part 4
https://mevius.5ch.net/test/read.cgi/tech/1577862511/
次スレは>>980が立ててね!!
探検
PowerShell -Part 5
レス数が950を超えています。1000を超えると書き込みができなくなります。
2021/03/18(木) 00:29:52.04ID:/MpReTiX
851デフォルトの名無しさん
2021/12/14(火) 20:06:47.20ID:lHfIhTrg はい
852デフォルトの名無しさん
2021/12/15(水) 12:02:30.22ID:PaPmsmcA まあでもWindows上で使ってるぶんには安定してるな。
当たり前だけどw
当たり前だけどw
853デフォルトの名無しさん
2021/12/15(水) 20:55:34.12ID:zohMO0ui854デフォルトの名無しさん
2021/12/16(木) 03:32:22.22ID:V72yjyE9 PowerShell上で非ANSIコードページ文字列をパイプやリダイレクトするには以下のようにcmd /C を使うしかない
cmd /C 'wsl --help > aaa.txt'
「ねぇどんな気持ち?」のクマAAをPowerShell愛好家に贈りたい
cmd /C 'wsl --help > aaa.txt'
「ねぇどんな気持ち?」のクマAAをPowerShell愛好家に贈りたい
855848
2021/12/16(木) 12:30:02.79ID:pA5H+adw コマンドプロンプトを使わずに、PowerShell で、
wsl --help を文字化けせずに、ファイルへ保存する方法はないのか?
>>848
修正
>でも、Windows Terminal(WT)では、PowerShell・コマンドプロンプト・WSL のLinux の3つが使えるけど、
>そのコマンドプロンプトでやったら、文字化けして見れない。
>WT は、UTF-8 だから文字化けするのかも
Windows Terminal(WT)のコマンドプロンプトで、
もう一度やってみたら、正常に表示された!
ちなみにコマンドプロンプトも、WTのコマンドプロンプトも、両方とも、CP932 でした
chcp
#=> 932
wsl --help を文字化けせずに、ファイルへ保存する方法はないのか?
>>848
修正
>でも、Windows Terminal(WT)では、PowerShell・コマンドプロンプト・WSL のLinux の3つが使えるけど、
>そのコマンドプロンプトでやったら、文字化けして見れない。
>WT は、UTF-8 だから文字化けするのかも
Windows Terminal(WT)のコマンドプロンプトで、
もう一度やってみたら、正常に表示された!
ちなみにコマンドプロンプトも、WTのコマンドプロンプトも、両方とも、CP932 でした
chcp
#=> 932
856デフォルトの名無しさん
2021/12/16(木) 14:46:23.47ID:fd1vO2kC Correct output in CMD, but incorrect output to a file in PowerShell #16012
https://github.com/PowerShell/PowerShell/issues/16012
https://github.com/PowerShell/PowerShell/issues/16012
857デフォルトの名無しさん
2021/12/16(木) 15:06:10.72ID:V72yjyE9 PowerShellの定番質問に知ったかぶりしてOutputEncodingを変えろと回答する人って自分で試さないんだろうか?
それとも質問を理解できるだけの国語力がないのか?
それとも質問を理解できるだけの国語力がないのか?
858デフォルトの名無しさん
2021/12/16(木) 15:11:12.80ID:ywwvfrpp 負けた気がするけどロケールはもう諦めてen_us、圧力掛けるのはおまいらに任せた
あえて真っ白linuxでは使わんけどwslは快適になるな
$profile |add-member -noteprop
で属性付けて
. $profile.common; .$profile.platform
とそーすしてる
あえて真っ白linuxでは使わんけどwslは快適になるな
$profile |add-member -noteprop
で属性付けて
. $profile.common; .$profile.platform
とそーすしてる
859デフォルトの名無しさん
2021/12/16(木) 15:23:47.31ID:9aNyIMSV そんなことより
左辺コレクションの-eqのフィルタの罠に見事に引っ掛かったわ
左辺コレクションの-eqのフィルタの罠に見事に引っ掛かったわ
860デフォルトの名無しさん
2021/12/16(木) 15:41:05.53ID:ywwvfrpp -eq(ual elements are...)と読み慣わしてる
861848
2021/12/16(木) 16:19:44.83ID:pA5H+adw OutputEncoding を変えるぐらいでは、出来ないだろ。
PowerShell(PS)は、迷走しまくっている
UTF-16LE とか、あるのか?
PS 6 では、BOM 無しUTF-8 も出来るらしいけど
PowerShell(PS)は、迷走しまくっている
UTF-16LE とか、あるのか?
PS 6 では、BOM 無しUTF-8 も出来るらしいけど
862848
2021/12/16(木) 16:24:12.96ID:pA5H+adw Windows は、CP932, BOM 有りUTF-8/BOM 無しUTF-8, UTF-16LE が入り乱れて、
外部と日本語でやり取りできないw
一方、Linux は、UTF-8 で統一されているから、全く問題ない。
Ubuntu は、UTF-32 らしいけど、外部には関係ない
外部と日本語でやり取りできないw
一方、Linux は、UTF-8 で統一されているから、全く問題ない。
Ubuntu は、UTF-32 らしいけど、外部には関係ない
863デフォルトの名無しさん
2021/12/16(木) 16:37:31.00ID:V72yjyE9 >>861
Input Encodingがシステムコードページ一択(日本語版Windowsだと932)になってることが原因だよ
UTF16-LEの文字列をSJISとみなしてOutputEncodingに変換するから文字化けしているのが真相
このPowerShellのおバカ仕様のせいでMINGWのUTF-8対応済みアプリの恩恵をまったく活かせない
Input Encodingがシステムコードページ一択(日本語版Windowsだと932)になってることが原因だよ
UTF16-LEの文字列をSJISとみなしてOutputEncodingに変換するから文字化けしているのが真相
このPowerShellのおバカ仕様のせいでMINGWのUTF-8対応済みアプリの恩恵をまったく活かせない
864848
2021/12/16(木) 18:10:47.68ID:pA5H+adw >UTF16-LEの文字列を、SJISとみなして
すごい。文字化けの謎を解明してくれたのか!
すごい。文字化けの謎を解明してくれたのか!
865848
2021/12/16(木) 18:13:34.65ID:pA5H+adw と言うことは、逆変換すればどうかな?
SJIS → UTF16-LE
SJIS → UTF16-LE
866848
2021/12/16(木) 18:19:40.99ID:pA5H+adw それか、あらかじめデータを、SJIS へ変換しておいてから渡すとか
Ruby では、色々な携帯の機種依存の日本語を変換するのに、
最長6パスとか掛かるものもあるらしい
Ruby では、色々な携帯の機種依存の日本語を変換するのに、
最長6パスとか掛かるものもあるらしい
867デフォルトの名無しさん
2021/12/16(木) 18:50:41.75ID:qMSlwGZE [console]::OutputEncoding = [System.Text.Encoding]::Unicode
v5環境だけどこれでファイル出力の文字化けは解消できた
ただ改行コード\nが全部\r\nになる
v5環境だけどこれでファイル出力の文字化けは解消できた
ただ改行コード\nが全部\r\nになる
868デフォルトの名無しさん
2021/12/16(木) 18:55:45.31ID:bRV7vQKn v7だと多分問題はない、よろしくやってくれてるんだと思う
mingwは使ってないから知らんが少なくとも標準パッケマネのwingetで入るやつ(gnuwinポート)でエンコで困った事はない
mingwは使ってないから知らんが少なくとも標準パッケマネのwingetで入るやつ(gnuwinポート)でエンコで困った事はない
869デフォルトの名無しさん
2021/12/16(木) 19:06:43.69ID:V72yjyE9870デフォルトの名無しさん
2021/12/16(木) 19:15:07.46ID:bRV7vQKn とりあえず環境を(ターミナルも)書いてくれないとアドバイスのしようがない
>>856の対処は試した?
>>856の対処は試した?
871デフォルトの名無しさん
2021/12/16(木) 19:24:43.19ID:V72yjyE9872デフォルトの名無しさん
2021/12/16(木) 19:27:32.35ID:V72yjyE9 マイクロソフトが関与するオープンソース・コミュニティーは問題が解決してないのに解決したことにしてしまうずさんな所が多い
バグ票を閉じることを優先する隠蔽体質あると思う
バグ票を閉じることを優先する隠蔽体質あると思う
873デフォルトの名無しさん
2021/12/16(木) 19:34:07.64ID:V72yjyE9 共産圏の人間が仕切ってるのかと思うような閉じられ方する、まさにノルマ
874デフォルトの名無しさん
2021/12/16(木) 20:11:17.38ID:q0ua6jst そうだね
875デフォルトの名無しさん
2021/12/16(木) 20:20:13.49ID:Y2CVy/MB マイクロソフト文化圏。
876デフォルトの名無しさん
2021/12/16(木) 21:09:01.98ID:VSm+B60n >>871
> is not a raw-bytes conduit to a file in PowerShell, unlike in cmd.exe.
Instead, PowerShell always decodes output from external programs (into .NET strings) before further processing (but not when printing directly to the display), based on the character encoding stored in [Console]::OutputEncoding.
Therefore, before your external-program call, you must (at least temporarily) set [Console]::OutputEncoding to match the actual character encoding used in your external program's output; e.g., [Console]::OutputEncoding = [System.Text.UTF8Encoding]::new()
> is not a raw-bytes conduit to a file in PowerShell, unlike in cmd.exe.
Instead, PowerShell always decodes output from external programs (into .NET strings) before further processing (but not when printing directly to the display), based on the character encoding stored in [Console]::OutputEncoding.
Therefore, before your external-program call, you must (at least temporarily) set [Console]::OutputEncoding to match the actual character encoding used in your external program's output; e.g., [Console]::OutputEncoding = [System.Text.UTF8Encoding]::new()
877デフォルトの名無しさん
2021/12/16(木) 21:15:42.41ID:V72yjyE9 従来型のパイプラインを選べない時点で設計思想がおかしいんですよ
$(xxx) みたいな特殊表現によるパイプが提供されてしかるべき
というかPowerShellのパイプラインを特殊表現に閉じ込めるべき
$(xxx) みたいな特殊表現によるパイプが提供されてしかるべき
というかPowerShellのパイプラインを特殊表現に閉じ込めるべき
878デフォルトの名無しさん
2021/12/16(木) 21:56:24.21ID:V72yjyE9 OutputEncodingとコードページがごっちゃになってるのもよくない
OutputEncodingをUTF8に指定したら、cmd /? で英語ヘルプが返されるようになってしまう
この挙動は、コマンドプロンプト上のchcp コマンドでコードページを変えたときのcmd /?の挙動と同じ
OutputEncodingをUTF8に指定したら、cmd /? で英語ヘルプが返されるようになってしまう
この挙動は、コマンドプロンプト上のchcp コマンドでコードページを変えたときのcmd /?の挙動と同じ
879デフォルトの名無しさん
2021/12/16(木) 22:23:10.88ID:ywwvfrpp >>877
そもそも従来型のパイプラインは生バイト晒してたように聞こえるんだが、テキストモード(ascii)IOを忘れてないか
fopen等システムコールに行儀良く"b"フラグ渡してれば問題はないが、そうでない時にcmdはtypeや |を処理する際にコンソールのファント設定見に行く等奇怪な挙動をしてた
でもたまに制御文字をtypeして死んだり…
テキストモードを排除できれば可能かも
そもそも従来型のパイプラインは生バイト晒してたように聞こえるんだが、テキストモード(ascii)IOを忘れてないか
fopen等システムコールに行儀良く"b"フラグ渡してれば問題はないが、そうでない時にcmdはtypeや |を処理する際にコンソールのファント設定見に行く等奇怪な挙動をしてた
でもたまに制御文字をtypeして死んだり…
テキストモードを排除できれば可能かも
880デフォルトの名無しさん
2021/12/16(木) 22:31:55.77ID:ywwvfrpp gnuとかのプログラムは今でもioモード切り替えフラグ付いてたりするね
生バイトが欲しければProcessInfoとかからstdin/stdout引っこ抜いてIO.BinaryWriterに渡すとか
生バイトが欲しければProcessInfoとかからstdin/stdout引っこ抜いてIO.BinaryWriterに渡すとか
881デフォルトの名無しさん
2021/12/16(木) 22:47:57.71ID:peIHdemY 文字列中に紛れたeof文字相当のバイトを見ても読み込みを続ける挙動は多分windows的には正しくないよな
そんな文字無くしてしまえ、と思うけど
そんな文字無くしてしまえ、と思うけど
882デフォルトの名無しさん
2021/12/17(金) 06:27:47.69ID:cFRRrt8D wsl --helpのみっともない改行はUTF-16のL"\r\n"をテキストモードで出力するwslの変態行為がそもそもの原因だし
https://docs.microsoft.com/en-us/cpp/c-runtime-library/unicode-stream-i-o-in-text-and-binary-modes?view=msvc-170
https://docs.microsoft.com/en-us/cpp/c-runtime-library/unicode-stream-i-o-in-text-and-binary-modes?view=msvc-170
883デフォルトの名無しさん
2021/12/17(金) 06:36:45.15ID:cFRRrt8D PowerShell固有のパイプラインに、|, >, >> を使うのをやめて
例えば $|, $>, $>> のような特殊表現に閉じ込めてほしいんだが
今さら無理か
例えば $|, $>, $>> のような特殊表現に閉じ込めてほしいんだが
今さら無理か
884デフォルトの名無しさん
2021/12/17(金) 07:27:36.04ID:cFRRrt8D 昔、MINGWのcatコマンドが0x0aを勝手に0x0d,0x0aへテキストモード変換する迷惑行為で人知れず苦しんだ人は多かったと思う
885デフォルトの名無しさん
2021/12/17(金) 08:47:10.04ID:+hqMWYwb c標準ライブラリの"t"フラグはホスト側でよしなに変換してくれという表明だけど、たぶん行論理セパレータ\n↔\r\n変換してくれるやつくらいに考えてる人が多いんじゃねえかな
886デフォルトの名無しさん
2021/12/17(金) 09:02:49.38ID:z0PRPnA0 "t"はc規格には無いか、無指定の"w"フラグ等がテキストモードにデフォルトするというだけで
cっぽいopen関数備えてる言語(pythonとか)だと"b"との区別を意識させる為に"wt"とか受け付けるけど
cっぽいopen関数備えてる言語(pythonとか)だと"b"との区別を意識させる為に"wt"とか受け付けるけど
887デフォルトの名無しさん
2021/12/17(金) 09:38:27.97ID:cFRRrt8D マイクロソフト謹製アプリが率先してやらかしてるってところが肝
888デフォルトの名無しさん
2021/12/17(金) 10:04:59.46ID:YK+z10uu それと直接関係あるかは再現しないのでちょっと不明
>>871はconhostをsjisに設定してない?
>>871はconhostをsjisに設定してない?
889デフォルトの名無しさん
2021/12/17(金) 10:07:35.81ID:YK+z10uu v7.2/wt(preview)
[console]のioデフォルトはutf8(=旧nobom)になってた
[console]のioデフォルトはutf8(=旧nobom)になってた
890デフォルトの名無しさん
2021/12/17(金) 10:09:02.77ID:cFRRrt8D891デフォルトの名無しさん
2021/12/17(金) 10:14:30.90ID:YK+z10uu892デフォルトの名無しさん
2021/12/17(金) 10:27:09.40ID:YK+z10uu あとwin11非対応マシンでms配布のロールバック用iso(非ローカライズ版)イメージで再インストール→日本語パック選択した人も該当するはず
oem版はsjisが多いと思う
oem版はsjisが多いと思う
893デフォルトの名無しさん
2021/12/17(金) 10:32:50.05ID:cFRRrt8D >>891
Windows Terminalでも起きるんだからconhost.exeは関係ないぞ
Windows Terminalでも起きるんだからconhost.exeは関係ないぞ
894デフォルトの名無しさん
2021/12/17(金) 10:42:00.46ID:YK+z10uu >>893
conhostも[console]もシステムのcpから拾ってくる
wtに関してはsetting.jsonからも設定できる
様々なエンコーディング切り替えられないソフトが混在してて、グローバルに切り替えるのがためらわれるならば
ps/cmd>ms-settings:~(スタート>歯車のやつ)からアプリ毎にエンコーディング設定するのがおすすめ
conhostも[console]もシステムのcpから拾ってくる
wtに関してはsetting.jsonからも設定できる
様々なエンコーディング切り替えられないソフトが混在してて、グローバルに切り替えるのがためらわれるならば
ps/cmd>ms-settings:~(スタート>歯車のやつ)からアプリ毎にエンコーディング設定するのがおすすめ
895デフォルトの名無しさん
2021/12/17(金) 10:56:53.95ID:cFRRrt8D エンコーディング機能にAutoDetectがあれば良いだけなんだがな
簡単なことを難しくしてしまうのは無能の証なんだよ
PowerShellみててつくづくそう思う
簡単なことを難しくしてしまうのは無能の証なんだよ
PowerShellみててつくづくそう思う
896デフォルトの名無しさん
2021/12/17(金) 11:26:52.18ID:aYaid5rJ オートディテクトはギルティ、頭抱える事になるぞ
素性の良いデータで大体動けばいいような自動化なら、古き良きnkfでも噛ませ
ポータブルにしたいならPSGalleryに純pwsh実装のモジュールが転がってる、クオリティは知らん
i/oエンコーディングをシェルレベルで扱えるのはバベルの塔なwindows環境では重宝する
素性の良いデータで大体動けばいいような自動化なら、古き良きnkfでも噛ませ
ポータブルにしたいならPSGalleryに純pwsh実装のモジュールが転がってる、クオリティは知らん
i/oエンコーディングをシェルレベルで扱えるのはバベルの塔なwindows環境では重宝する
897デフォルトの名無しさん
2021/12/17(金) 11:27:13.62ID:cFRRrt8D PowerShellのパイプラインそれ自体がすでに低速なのに文字コードの自動判定すらないとか無能すぎでしょ
898デフォルトの名無しさん
2021/12/17(金) 11:29:06.56ID:cFRRrt8D899デフォルトの名無しさん
2021/12/17(金) 12:26:32.74ID:YK+z10uu リダイレクトの挙動が不自然に感じるのは、ホストの概念で躓いてるのでは
ホストはコンソールとも限らないし、coreバンドルのコンソールホスト以外にもiseやらaspやら色々あるわけで
なんで設定が分かれてるのか考えるべき
ホストはコンソールとも限らないし、coreバンドルのコンソールホスト以外にもiseやらaspやら色々あるわけで
なんで設定が分かれてるのか考えるべき
900デフォルトの名無しさん
2021/12/17(金) 12:35:31.53ID:cFRRrt8D901デフォルトの名無しさん
2021/12/17(金) 12:48:55.55ID:BQzVpcl1 >>900
>>856からrelatedで飛べる
https://github.com/PowerShell/PowerShell/issues/1908
で提案されてるような構文はあったら確かに便利かと思う
もちろんcoreの設計とは相容れないから、追加モジュールかwindows pwsh(新)でリリースすることになると思うけど
イイね押しとこう
>>856からrelatedで飛べる
https://github.com/PowerShell/PowerShell/issues/1908
で提案されてるような構文はあったら確かに便利かと思う
もちろんcoreの設計とは相容れないから、追加モジュールかwindows pwsh(新)でリリースすることになると思うけど
イイね押しとこう
902デフォルトの名無しさん
2021/12/17(金) 13:16:49.94ID:cFRRrt8D むしろPowerShelll固有の構文を新しい構文に移行させてほしいくらいだわ
パイプラインにテキスト縛りがある時点でPowerShellは欠陥品なんだよ
パイプラインにテキスト縛りがある時点でPowerShellは欠陥品なんだよ
903デフォルトの名無しさん
2021/12/29(水) 20:28:55.03ID:/Pws6ORw PowerShellは以下コマンドをFunction化できない。
[console]::OutputEncoding = [System.Text.Encoding]::GetEncoding(932); $OutputEncoding = [Text.Encoding]::GetEncoding(932);
Function内でしかスコープが有効でないことが原因。$global:OutputEncodingを変えてもダメ。
なのでchcpコマンド相当のことをやろうとしたら手入力するしかない
なんというか、PowerShellは他のシェル言語でできいることができない残念なシェル言語。
オワコン化待ったなし
[console]::OutputEncoding = [System.Text.Encoding]::GetEncoding(932); $OutputEncoding = [Text.Encoding]::GetEncoding(932);
Function内でしかスコープが有効でないことが原因。$global:OutputEncodingを変えてもダメ。
なのでchcpコマンド相当のことをやろうとしたら手入力するしかない
なんというか、PowerShellは他のシェル言語でできいることができない残念なシェル言語。
オワコン化待ったなし
904デフォルトの名無しさん
2021/12/29(水) 20:49:49.82ID:/Pws6ORw ([console])::OutputEncodingをFunction外にも適用できないことにはchcp相当の機能は実現できない
Powershellからchcpを呼ぶとcmdシェルを介してコマンドプロンプトの初期値が表示されるだけであり、グローバル設定とは無関係
([console])::OutputEncodingが効いたかどうかは、cmd /? で戻されるヘルプ文字列が日本語かどうかで判断できる
Powershellからchcpを呼ぶとcmdシェルを介してコマンドプロンプトの初期値が表示されるだけであり、グローバル設定とは無関係
([console])::OutputEncodingが効いたかどうかは、cmd /? で戻されるヘルプ文字列が日本語かどうかで判断できる
905デフォルトの名無しさん
2021/12/29(水) 20:57:34.10ID:7YDJokPl UNIXシェルは糞of糞
やっぱりPowerShellだよな
シェルスクリプトは文字通りの逐次実行
sleepy-yoshi.hatenablog.com/entry/20090917/p1
やっぱりPowerShellだよな
シェルスクリプトは文字通りの逐次実行
sleepy-yoshi.hatenablog.com/entry/20090917/p1
906デフォルトの名無しさん
2021/12/29(水) 23:03:59.28ID:wj529v9h907デフォルトの名無しさん
2021/12/29(水) 23:16:02.98ID:/Pws6ORw >>906
説明不足だった
やりたいことはコマンド入力じゃなくてSet-PSReadLineKeyHandler -Keyを使ったキーバインドなんだけど
ドット. で反映してくてもScriptBlockやFunctionのスコープに閉じ込められてしまうから解決にならない
説明不足だった
やりたいことはコマンド入力じゃなくてSet-PSReadLineKeyHandler -Keyを使ったキーバインドなんだけど
ドット. で反映してくてもScriptBlockやFunctionのスコープに閉じ込められてしまうから解決にならない
908デフォルトの名無しさん
2021/12/29(水) 23:39:26.16ID:/Pws6ORw ま、そういうエンコーディング切り替え機能をどれだけ充実させても既存のbashやCMDのようなプロセス間通信はできないのでやるだけ無駄ってのはわかってる
909デフォルトの名無しさん
2021/12/30(木) 08:42:29.02ID:InFuAQoQ PowerShellでバイナリ(もしくはエンコーディングが不明なデータ)を扱う
https://qiita.com/boukichi_numloc/items/0f4bb4e73f71c2f0a519
https://qiita.com/boukichi_numloc/items/0f4bb4e73f71c2f0a519
910デフォルトの名無しさん
2021/12/30(木) 21:35:12.30ID:FEP7eJXA powershell内部でcmd呼んだらいいのでは
何がしたいのかわからんけど
何がしたいのかわからんけど
911デフォルトの名無しさん
2021/12/30(木) 23:22:49.02ID:pA3aK4qE PowerShellからcmd を呼んだら負け、みたいな抵抗感が少しある
912デフォルトの名無しさん
2021/12/31(金) 19:53:42.99ID:YcD3GAD3 残念な仕様はあれども、ちゃんと書けば、ちゃんと動く
クソとは思わんな。便利は便利よ
クソとは思わんな。便利は便利よ
913デフォルトの名無しさん
2022/01/11(火) 22:54:51.08ID:rTZaFBoT CSVを項目で検索し、ヒットした列を編集したいんだけど、パイプが理解しきれてないせいで上手いこといかない
$ArrCsvData | Where-Object{$_.CodeNo -match $Code} |
このあとにカンマ区切りのテキストファイルを該当列に上書きしたいんだけど、どうすればいいのでしょうか?
$ArrCsvData | Where-Object{$_.CodeNo -match $Code} |
このあとにカンマ区切りのテキストファイルを該当列に上書きしたいんだけど、どうすればいいのでしょうか?
914デフォルトの名無しさん
2022/01/11(火) 23:45:14.22ID:1S8cvNBi >>913
まず、ArrCsvDataはCSVからオブジェクトに変換(ConverFrom-CSVやImport-CSV)した物なのかな
じゃないとプロパティで値を呼び出せないよ
「カンマ区切りのテキストファイルを該当列に上書きしたい」の意味が測り兼ねるけど、
条件に合致する行を編集したいなら
$ArrCsvData | ForEach-Object{ if($_.CodeNo -match $Code){$_.編集したい列名 = "編集後の文字列";$_ }
とやる。コツは編集後に「;$_ 」とやって出力する所。じゃないと編集だけして破棄する事になる。
さらにCSVで保存したいなら
〜 | Export-Csv -PSPath "保存先パス"
まず、ArrCsvDataはCSVからオブジェクトに変換(ConverFrom-CSVやImport-CSV)した物なのかな
じゃないとプロパティで値を呼び出せないよ
「カンマ区切りのテキストファイルを該当列に上書きしたい」の意味が測り兼ねるけど、
条件に合致する行を編集したいなら
$ArrCsvData | ForEach-Object{ if($_.CodeNo -match $Code){$_.編集したい列名 = "編集後の文字列";$_ }
とやる。コツは編集後に「;$_ 」とやって出力する所。じゃないと編集だけして破棄する事になる。
さらにCSVで保存したいなら
〜 | Export-Csv -PSPath "保存先パス"
915デフォルトの名無しさん
2022/01/11(火) 23:46:35.07ID:1S8cvNBi ミス
if文の閉じカッコ忘れてた
$ArrCsvData | ForEach-Object{ if($_.CodeNo -match $Code){$_.編集したい列名 = "編集後の文字列";$_ }
↓
$ArrCsvData | ForEach-Object{ if($_.CodeNo -match $Code){$_.編集したい列名 = "編集後の文字列"} ; $_ }
if文の閉じカッコ忘れてた
$ArrCsvData | ForEach-Object{ if($_.CodeNo -match $Code){$_.編集したい列名 = "編集後の文字列";$_ }
↓
$ArrCsvData | ForEach-Object{ if($_.CodeNo -match $Code){$_.編集したい列名 = "編集後の文字列"} ; $_ }
916デフォルトの名無しさん
2022/01/12(水) 00:21:17.01ID:B+xDwNUa いちいち空行挿むなスカスカ脳
917デフォルトの名無しさん
2022/01/12(水) 01:11:14.14ID:0oGT7bUk >>915
教えていただきありがとうございます
CSVは
「A001,,」
「B001,かきくけこ,12345」
のようなフィールドで
$Code = "A001"を検索し
「A001,あいうえお,12345」
のような内部のテキストファイルがあり、編集したい列名を指定せずにまとめて編集したいと思っています。
実際には編集する項目が多くループさせながら格納だと長くなってしまうため、省略できないかと思い相談させていただきました。
教えていただきありがとうございます
CSVは
「A001,,」
「B001,かきくけこ,12345」
のようなフィールドで
$Code = "A001"を検索し
「A001,あいうえお,12345」
のような内部のテキストファイルがあり、編集したい列名を指定せずにまとめて編集したいと思っています。
実際には編集する項目が多くループさせながら格納だと長くなってしまうため、省略できないかと思い相談させていただきました。
918デフォルトの名無しさん
2022/01/12(水) 21:13:44.63ID:vTY0CDWm gc $csv_in -Encoding Default | %{ $fields = $_ -split ","; if ($fields[0] -match $Code) { $fieldsを加工; $fields -join "," } else { $_ } } | Out-File $csv_out -Encoding Default
919デフォルトの名無しさん
2022/01/13(木) 01:49:18.52ID:sU2jW0+6920デフォルトの名無しさん
2022/01/18(火) 20:28:41.01ID:4KOVvciD get-aliasをalias、またはget-serviceをservice、
自作の関数でもget-testとしたらtest、のように
エイリアス定義無しでも
get-を省略して実行出来てしまう(または、省略したらget-*扱いになる)のですが
これについて記載されたドキュメントが何処にあるか
教えて頂けないでしょうか
自作の関数でもget-testとしたらtest、のように
エイリアス定義無しでも
get-を省略して実行出来てしまう(または、省略したらget-*扱いになる)のですが
これについて記載されたドキュメントが何処にあるか
教えて頂けないでしょうか
921デフォルトの名無しさん
2022/01/19(水) 20:37:21.76ID:QgcNfSy6 >>920
https://docs.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_parsing?view=powershell-7.2
PowerShell がコマンド入力を解析すると、コマンドレットまたはネイティブ実行可能ファイルへのコマンド名の解決が試みされます。 コマンド名が完全に一致しない場合、PowerShell は既定の動詞としてコマンドの前 Get- に付加されます。
https://docs.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_parsing?view=powershell-7.2
PowerShell がコマンド入力を解析すると、コマンドレットまたはネイティブ実行可能ファイルへのコマンド名の解決が試みされます。 コマンド名が完全に一致しない場合、PowerShell は既定の動詞としてコマンドの前 Get- に付加されます。
922デフォルトの名無しさん
2022/01/20(木) 15:57:54.33ID:PUohEL+U PowerShellバカにしてたけど、安定性半端ないわ
適当にササッと書いたやつがなんのエラーもなくずっと正確に動いとる
適当にササッと書いたやつがなんのエラーもなくずっと正確に動いとる
923デフォルトの名無しさん
2022/01/20(木) 16:02:20.23ID:Aa91Vk9H924デフォルトの名無しさん
2022/01/20(木) 17:34:26.20ID:I7UNJZAr 正直、PowerShellって名前がダサいと思う
925デフォルトの名無しさん
2022/01/20(木) 19:23:46.46ID:qK2oGbTr チカラこそパワー!
926デフォルトの名無しさん
2022/01/20(木) 19:45:12.86ID:N7Uy6cYb ぱわわしぇる!
927デフォルトの名無しさん
2022/01/20(木) 19:54:27.39ID:INnqrIt/ 名前負けしてるなあ、とは思うけど
928デフォルトの名無しさん
2022/01/20(木) 20:28:47.30ID:Ibae9TV2 富士通が昔PowerCobolとか出してたからPowerなんちゃらは不安になる
929デフォルトの名無しさん
2022/01/20(木) 20:31:33.85ID:6YV8Mf/D うちはウルトラCとかいうインタープリターだったなー
930デフォルトの名無しさん
2022/01/20(木) 22:25:31.06ID:yvXRNpR1 力貝
宝貝みたいなもんだなきっと
宝貝みたいなもんだなきっと
931デフォルトの名無しさん
2022/01/20(木) 22:31:19.45ID:ogjAY3PM932デフォルトの名無しさん
2022/01/21(金) 14:41:49.71ID:Q8HlpjEI 質問です。
get-childitemのデフォルトのソート順は何でしょうか?(sort-objectを明示しない場合の並び順)
ソート順について記載されているドキュメントの所在でも良いです。
get-childitemのデフォルトのソート順は何でしょうか?(sort-objectを明示しない場合の並び順)
ソート順について記載されているドキュメントの所在でも良いです。
933デフォルトの名無しさん
2022/01/21(金) 20:37:48.38ID:QAFbTLmU934デフォルトの名無しさん
2022/01/21(金) 20:45:32.61ID:D6eDuhqM935デフォルトの名無しさん
2022/01/21(金) 22:44:52.31ID:Q8HlpjEI 932です。先ほどの質問についてご回答頂きありがとうございます。予めソートされていることがわかり、安心しました。
追加ですみませんが、もう1点質問をさせてください。(先ほどの質問は、当疑問からの派生でした。)
■前提事項
比較元と比較先でソート順を変えてdiffを取った場合、バイナリによる比較とハッシュ値による比較では結果が異なります。
具体的に申し上げますと、下記ディレクトリ構成の「file1.txt」を異なる内容にした場合、
バイナリ比較では、比較元の「修正前.xlsx」と比較先の「file1.txt」で差分を出力します。(ディレクトリの違いによるアンマッチを出力する。)
ハッシュ値の比較では、比較元の「file1.txt」と比較先の「file1.txt」で差分を出力します。(同ディレクトリ配下のアンマッチを出力する。)
■質問
なぜハッシュ値による比較では、比較元と比較先でソート順が違うのに同ディレクトリの差分のみを出力できるのか。(データ型の違いにヒントがあるのかなと思っていますが、解明まで至っておりません。)
■コード
$master = Get-ChildItem -LiteralPath [比較元ディレクトリ] -Recurse -File | Sort-Object{$_.LastWriteTime}
$work = Get-ChildItem -LiteralPath [比較先ディレクトリ] -Recurse -File | Sort-Object{$_.FullName}
@(Compare-Object (Get-Content -Encoding Byte $master.FullName) (Get-Content -Encoding Byte $work.FullName) -PassThru)
@(Compare-Object -Property Hash (Get-FileHash $master.FullName) (Get-FileHash $work.FullName) -PassThru)
■ディレクトリ構成(比較元と比較先で同一)
dir1
└─dir2
└─dir3
├─PG1
│ file1.txt
│ file2.txt
│ file3.txt
│
└─PG2
修正前.xlsx
追加ですみませんが、もう1点質問をさせてください。(先ほどの質問は、当疑問からの派生でした。)
■前提事項
比較元と比較先でソート順を変えてdiffを取った場合、バイナリによる比較とハッシュ値による比較では結果が異なります。
具体的に申し上げますと、下記ディレクトリ構成の「file1.txt」を異なる内容にした場合、
バイナリ比較では、比較元の「修正前.xlsx」と比較先の「file1.txt」で差分を出力します。(ディレクトリの違いによるアンマッチを出力する。)
ハッシュ値の比較では、比較元の「file1.txt」と比較先の「file1.txt」で差分を出力します。(同ディレクトリ配下のアンマッチを出力する。)
■質問
なぜハッシュ値による比較では、比較元と比較先でソート順が違うのに同ディレクトリの差分のみを出力できるのか。(データ型の違いにヒントがあるのかなと思っていますが、解明まで至っておりません。)
■コード
$master = Get-ChildItem -LiteralPath [比較元ディレクトリ] -Recurse -File | Sort-Object{$_.LastWriteTime}
$work = Get-ChildItem -LiteralPath [比較先ディレクトリ] -Recurse -File | Sort-Object{$_.FullName}
@(Compare-Object (Get-Content -Encoding Byte $master.FullName) (Get-Content -Encoding Byte $work.FullName) -PassThru)
@(Compare-Object -Property Hash (Get-FileHash $master.FullName) (Get-FileHash $work.FullName) -PassThru)
■ディレクトリ構成(比較元と比較先で同一)
dir1
└─dir2
└─dir3
├─PG1
│ file1.txt
│ file2.txt
│ file3.txt
│
└─PG2
修正前.xlsx
936デフォルトの名無しさん
2022/01/21(金) 22:50:11.95ID:Q8HlpjEI 長文になりすみませんでした。
ディレクトリ構成が崩れてしまいましたが、以下の通りです。
dir1\dir2\dir3\PG1\file*.txt
dir1\dir2\dir3\PG2\修正前.xlsx
別の場所で質問すべきということでしたら、その旨をお伝えください。
当スレに相応しくないようでしたら無視頂いて構いません。申し訳ございませんでした。
ディレクトリ構成が崩れてしまいましたが、以下の通りです。
dir1\dir2\dir3\PG1\file*.txt
dir1\dir2\dir3\PG2\修正前.xlsx
別の場所で質問すべきということでしたら、その旨をお伝えください。
当スレに相応しくないようでしたら無視頂いて構いません。申し訳ございませんでした。
937デフォルトの名無しさん
2022/01/21(金) 22:51:59.59ID:2Ya+eSMz 例えば、ソード結果が異なる、1,2,3 と、3,2,1 を比べれば、2しか一致しない
938デフォルトの名無しさん
2022/01/22(土) 18:26:51.31ID:wDrU8P/z >>917
Ruby で作ってみた
require 'csv'
# ruby ./script.rb ./input.csv (デフォルトは、$stdout)
# ruby ./script.rb ./input.csv > 出力ファイル
# 2列目に、カンマ・改行・シングル/ダブルクォーテーションを入れてみた
csv_text = %(A001,"あ,い\nう'え""お",123) #=> "A001,\"あ,い\nう'え\"\"お\",123"
csv_ary = CSV.parse_line( csv_text ) #=> ["A001", "あ,い\nう'え\"お", "123"]
# 引数は入力ファイル名・input.csv
CSV.filter( File.open( ARGV[ 0 ] ) ) do |row| # 1行ずつ処理する
if row[ 0 ] == csv_ary[ 0 ]
( 0...csv_ary.length ).each do |idx|
row[ idx ] = csv_ary[ idx ] # すべての列を差し替える
end
end
end
入力ファイル・input.csv
A001,,
B,1,2
A001,1,2
出力。A001で始まる、2行が置換された
A001,"あ,い
う'え""お",123
B,1,2
A001,"あ,い
う'え""お",123
Ruby で作ってみた
require 'csv'
# ruby ./script.rb ./input.csv (デフォルトは、$stdout)
# ruby ./script.rb ./input.csv > 出力ファイル
# 2列目に、カンマ・改行・シングル/ダブルクォーテーションを入れてみた
csv_text = %(A001,"あ,い\nう'え""お",123) #=> "A001,\"あ,い\nう'え\"\"お\",123"
csv_ary = CSV.parse_line( csv_text ) #=> ["A001", "あ,い\nう'え\"お", "123"]
# 引数は入力ファイル名・input.csv
CSV.filter( File.open( ARGV[ 0 ] ) ) do |row| # 1行ずつ処理する
if row[ 0 ] == csv_ary[ 0 ]
( 0...csv_ary.length ).each do |idx|
row[ idx ] = csv_ary[ idx ] # すべての列を差し替える
end
end
end
入力ファイル・input.csv
A001,,
B,1,2
A001,1,2
出力。A001で始まる、2行が置換された
A001,"あ,い
う'え""お",123
B,1,2
A001,"あ,い
う'え""お",123
939デフォルトの名無しさん
2022/01/22(土) 18:35:03.63ID:95Wn62Jb キチガイが来た
940デフォルトの名無しさん
2022/01/22(土) 18:54:41.80ID:MgA+2TRu キチガイは見えない
941デフォルトの名無しさん
2022/01/22(土) 19:21:27.37ID:kAQ/cYNL 目的とやってることがとっちらかってるな
なんで比較するのにLastWriteTimeでソートしてんの
なんで比較するのにLastWriteTimeでソートしてんの
942デフォルトの名無しさん
2022/01/26(水) 20:55:59.87ID:wcWyeiko https://i.imgur.com/uWA4d1c.png
タスクマネージャーから手動で子プロセスだけ終了させることはできるけど
PowerShellでやるには Get-Process -Name explorer のあと
どうやって子プロセスのPIDを取得すればいいでしょうか?教えてください
タスクマネージャーから手動で子プロセスだけ終了させることはできるけど
PowerShellでやるには Get-Process -Name explorer のあと
どうやって子プロセスのPIDを取得すればいいでしょうか?教えてください
943デフォルトの名無しさん
2022/01/26(水) 22:28:49.77ID:KYTViaCV944デフォルトの名無しさん
2022/01/26(水) 23:22:40.50ID:z4xHZvF2 最近PowerShell使い始めたんだけど
大きなシステムを作るとき、メインと複数のサブルーチンとかも基本1つのファイルで完結させるのか?それともファイルを何個も分けるのか?
どっちだとしても可読性下がる気がする
大きなシステムを作るとき、メインと複数のサブルーチンとかも基本1つのファイルで完結させるのか?それともファイルを何個も分けるのか?
どっちだとしても可読性下がる気がする
945デフォルトの名無しさん
2022/01/26(水) 23:29:53.21ID:z4xHZvF2 PowerShell ISEでスクリプトウィンドウは何で左側に表示できないんだろ
左側のほうが俺はやりやすいわ
左側のほうが俺はやりやすいわ
946デフォルトの名無しさん
2022/01/26(水) 23:54:26.65ID:BYfIsc0u >>945
Microsoftはpowershell開発にはvscodeの方がおすすめだと言ってるよ
https://docs.microsoft.com/ja-jp/powershell/scripting/dev-cross-plat/vscode/using-vscode?view=powershell-7.2
Microsoftはpowershell開発にはvscodeの方がおすすめだと言ってるよ
https://docs.microsoft.com/ja-jp/powershell/scripting/dev-cross-plat/vscode/using-vscode?view=powershell-7.2
947デフォルトの名無しさん
2022/01/27(木) 02:33:22.29ID:sf3Kg0Os >>943
ありがとうございます。これで試してみます
ありがとうございます。これで試してみます
948デフォルトの名無しさん
2022/01/27(木) 08:04:44.84ID:EosWc+ux >>944
そもそも大きなシステムをPowerShellでは作らない
そもそも大きなシステムをPowerShellでは作らない
949デフォルトの名無しさん
2022/01/27(木) 09:23:06.79ID:p8Bx/YYe950デフォルトの名無しさん
2022/01/27(木) 10:21:25.25ID:tOnT0cfV powershellで大きめのものを組むならC#で組むときみたいな箱庭を作る発想は完全に捨てて、UNIX的な思考に切り替えるべき
完成度の高い単独で機能するコマンドを作って組み合わせていくようにすることで、ドメインを拡大させない
コマンド同士の細かい相互作用を作り込んではいけない
完成度の高い単独で機能するコマンドを作って組み合わせていくようにすることで、ドメインを拡大させない
コマンド同士の細かい相互作用を作り込んではいけない
951デフォルトの名無しさん
2022/01/29(土) 09:01:01.42ID:oEiS6XOx Unix コンポーネント: 小さいことは美徳である
https://web.archive.org/web/20080709051701/http://www.os-omicron.org/~takano/private/trans/bongo-bong_j.html#:~:text=%E3%82%92%E6%8E%A2%E3%81%9B)-,Unix%20%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88,-%3A%20%E5%B0%8F%E3%81%95%E3%81%84%E3%81%93%E3%81%A8%E3%81%AF
https://web.archive.org/web/20080709051701/http://www.os-omicron.org/~takano/private/trans/bongo-bong_j.html#:~:text=%E3%82%92%E6%8E%A2%E3%81%9B)-,Unix%20%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88,-%3A%20%E5%B0%8F%E3%81%95%E3%81%84%E3%81%93%E3%81%A8%E3%81%AF
レス数が950を超えています。1000を超えると書き込みができなくなります。
ニュース
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 ★2 [Hitzeschleier★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 【維新】吉村知事「中国人観光客だけに頼るビジネスモデル変えていかないといけない」「高市総理の発言は撤回する必要はない」 [Hitzeschleier★]
- 【STARTO ENTERTAINMENT】timelesz篠塚大輝『大きな古時計』替え歌一発ギャグ「今はもう動かない おじいさんにトドメ~♪」が波紋 [Ailuropoda melanoleuca★]
- 【社会】40代以上のおじさん・おばさんは叩いてオッケーという風潮はなぜ加速したのか [七波羅探題★]
- 【実況】博衣こよりのえちえち歌枠🧪
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 外務省局長、よくわからないまま帰国へ [834922174]
- ラーメン屋「日高屋が安いせいで客が来ない!日高屋はもっと値上げしろ!」 [449534113]
- 中国外務省「日中関係の悪化は高市早苗首相が原因」と名指しで強く非難。キタ━(゚∀゚)━! [153490809]
- 【悲報】オックスフォード大学「日本で影響力のある人」ランキングを公表。1位西村博之氏、2位堀江貴文氏、3位高橋洋一氏 [566475398]
