TVアニメ「CHAOS;CHILD」プロモーションVTR
アニメ『CHAOS;CHILD』(2017)
ハードな雰囲気がよくて、見始めました。
今回はPowerShellでGet-ChildItemと置換。
文字列の置換は、Replace使えば簡単ですね。
PS C:\Users\takk\tmp> $a="HELLO" PS C:\Users\takk\tmp> $a HELLO PS C:\Users\takk\tmp> $a -replace "L","_" HE__O PS C:\Users\takk\tmp>
Get-ChildItemの結果の置換はどうでしょう。まず、変数に代入。
PS C:\Users\takk\tmp> $a=Get-ChildItem PS C:\Users\takk\tmp> $a ディレクトリ: C:\Users\takk\tmp Mode LastWriteTime Length Name ---- ------------- ------ ---- d---- 2018/03/07 21:10 dir1 PS C:\Users\takk\tmp>
この結果の、ModeをHelloに変えてみましょう。
PS C:\Users\takk\tmp> $a -replace "Mode","Hello" dir1 PS C:\Users\takk\tmp>
おかしいです。結果の文字列がdir1のみになってしまいました。
型を確認します。置換前。
S C:\Users\takk\tmp> $a.GetType() sPublic IsSerial Name BaseType ------- -------- ---- -------- rue True DirectoryInfo System.IO.FileSys... S C:\Users\takk\tmp>
置換後。
PS C:\Users\takk\tmp> ($a -replace "Mode","Hello").GetType() IsPublic IsSerial Name BaseType -------- -------- ---- -------- True True String System.Object PS C:\Users\takk\tmp>
DirectoryInfoの時は、メッセージ付きのディレクトリ情報が表示されて、Stringの時は、ディレクトリ一覧のみが表示されてるっぽいですね。
仕方がないので、一旦ファイルに落としてから変数に格納し直します。
PS C:\Users\takk\tmp> $a > tmp PS C:\Users\takk\tmp> $a=gc tmp PS C:\Users\takk\tmp> rm tmp PS C:\Users\takk\tmp>
まあ、強引なやり方です。
PS C:\Users\takk\tmp> $a -replace "Mode","Hello" ディレクトリ: C:\Users\takk\tmp Hello LastWriteTime Length Name ---- ------------- ------ ---- d---- 2018/03/07 21:10 dir1 PS C:\Users\takk\tmp>
ちゃんとModeがHelloに置換できました。
コメント