none
ファイルごとにPowershell で処理するにはどうすればよいでしょうか? RRS feed

  • 質問

  • $a=dir | select name

    foreach ( $e in $a ) {

    cat $e |  何かファイル編集処理等

    }

    上記のような感じで、各ファイルに対して処理を行おうと思いましたが、

    $aがFILEINFOオブジェクトなのでうまくいきません。 普通にコマンド結果から取得したファイルパス名などの

    文字列を コマンド引数の文字列パス名として使うにはどのようにすればよいでしょうか?

    2015年12月1日 8:11

すべての返信

  • oooohです。

    一文ですべてやろうとせずに一時的にtxtファイル等に一度出力して、

    それをGet-Contentとかしたら行けませんか?

    ※一時的に出力したファイルは最後に消せばよいです。

    2015年12月1日 9:06
  • チャブーンです。

    上記のような感じで、各ファイルに対して処理を行おうと思いましたが、
    $aがFILEINFOオブジェクトなのでうまくいきません。 普通にコマンド結果から取得したファイルパス名などの
    文字列を コマンド引数の文字列パス名として使うにはどのようにすればよいでしょうか?

    操作対象オブジェクトの「フルパス名」が文字列としてほしい場合、ムリにSelectはせず参照時にFullNameプロパティ値を呼び出します。

    $a=dir
    
    foreach ( $e in $a ) {
    cat $e.FullName |  何かファイル編集処理等
    }

    うえの方法が一番スマート(オブジェクトをオブジェクトとして扱えるので)な気がしますが、どうしても文字列の配列でないと気に入らない、ということでしたら、したのような方法も採れます。

    $a=dir | select fullname | Foreach {$_.fullname}
    
    foreach ( $e in $a ) {
    cat $e |  何かファイル編集処理等
    }

    うえは、1行目でオブジェクトのプロパティをselectした後、各オブジェクトのプロパティ値($_.fullname)をループさせて、変数に代入しています。プロパティ値はString型ですから、String型変数として配列に読み込まれる、ということになります。

    フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。



    2015年12月1日 9:50