Find の結果を加工して配列に入れる →CSV 出力する。
エクセルに取り込んでうまく「データの区切り位置」などで分割できればいいけど、
うまくいかない場合なんかに、Find の結果をPowerShell で加工したい。
CSV 出力も、文中で「,」が使われている場合、勝手にそこでセル分割されてしまう為、
回避策として、「?」などのその他の記号を分割文字に指定してCSV(疑似CSV…?)出力したい。
Find の結果をForEach で処理しています。
メインの配列($all)を用意して、ForEach の中でも配列($array)を定義、データをいろいろと分割した後で
先に用にしたメインの配列($all)に順番に入れてます。
function test{
$all=@()
find /i '"ALIAS/"' *.inc | ForEach-Object {
$array=@()
try {
$d='NO_COMMENT'
$a=$_.Substring(0, 6);
$b=$_.Substring(6,$_.IndexOf(',')-6);
$c=$_.Substring($_.IndexOf(',')+1);
if($c.IndexOf('$$') -gt 0){
$d=$c.Substring($c.IndexOf('$$'))
$c=$c.Substring(0,$c.IndexOf('$$'))
$c=$c.Trim()
}
$array += $a
$array += $b
$array += $c
$array += $d
}
catch {
<#Do this if a terminating exception happens#>
}
$all += $array -join "?"
}
$all
$all | Out-File -FilePath "check.csv" -Encoding utf8
}
Find で検索する文字列を複数にしたい場合は、Findstr を使用するといいと思います。
findstr /i '"load cutcom"' .\op010.acl
サブフォルダ内も検索するなら /s をつける。
findstr /i /s '"load cutcom"' .\op010.acl
作成した疑似?CSV の取り込み手順は下記を参考にしてください。
エクセルで「テキストまたは CSV から」経由でデータを取り込むときに、カスタムの区切り記号を使うと最初のカラムしか取り込めない
以上です。
(Visited 25 times, 1 visits today)