以下のようなコマンドで、テキストファイルの文字列置換を行おうとすると、
Get-Content test2.csv | %{$_ -replace "2010/06","2010/07"} | Set-Content test2.csv |
こんなエラーメッセージが出る。
Set-Content : 別のプロセスで使用されているため、プロセスはファイル 'D:\test2.csv' にアクセスできません。 |
テキストを1行ずつ読み取り、順次パイプラインに流し込むためだろう。
Get-ContentはReadCountパラメータがあって、ゼロを指定するとすべてを一度に読み込むとある。
これを使えばOKかと思ったがなぜかうまくいかない。
以下のように括弧で括ってあげる必要がありそうだ。
(Get-Content test2.csv) | %{$_ -replace "2010/06","2010/07"} | Set-Content test2.csv |
ファイルサイズが大きい場合は一旦一時ファイルに出力なんてことをしたほうが良いかも。
0 件のコメント:
コメントを投稿