特定の文字が書いてある行を調べるスクリプト

09.03

BATコマンドなどの場合、出力される結果はオブジェクトではなく単なるテキスト情報となります。

コマンド自体は Powershell で使えますが、出力された値を次のコマンドに利用したい場合不便となります。

そんな時はいったん結果そのものをテキストに出力させて、以下のスクリプトで書いてある行を特定。その行のみを Get-content で取り込んで、split 等で必要な部分だけを抽出してそれを変数に入れるといった流れで解決できます。

以下は以前に作ったスクリプトでどんな要件で作ったのか忘れましたが、上記の内容をBATコマンドで出た結果から、プロセス名を調べるスクリプトのようです。

だんだんと Powershell もバージョンアップしてこのような使い方は減ってきていますが、まだまだBATコマンドでしか対応できないものも多いのでそんな時はぜひ利用してみてください。

# 以下で”Account Name” “New Process Name” の書いてある行を検索する

$line1 = Select-String -Path $env:UserProfile\Desktop\test.txt -Pattern “Account Name” | ForEach-Object { $($_ -split”:”)[2] }

$line2 = Select-String -Path $env:UserProfile\Desktop\test.txt -Pattern “New Process Name” | ForEach-Object { $($_ -split”:”)[2] }

# Line1は必ず2つあるようなので、$line1[0]で使用すること

$text = Get-Content -Path $env:UserProfile\Desktop\test.txt

$Line1Name = $text[$line1[0] – 1]

$temp = $Line1Name.split(“:”)

$temp = $temp -replace ” “,””

$temp = $temp -replace “`t”,””

$AccountName = $temp[1]

$Line2Name = $text[$line2 – 1]

$temp = $Line2Name.split(“:”)

$temp = $temp -replace ” “,””

$temp = $temp -replace “`t”,””

$ProcessName = $temp[1]

関連記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

2018年10月
« 9月    
1234567
891011121314
15161718192021
22232425262728
293031  
ページ上部へ戻る