環境変数に目的のパスが含まれているか確認したいことは良くあるが、結構なが~いのが普通なので年寄が目視で確認するのはちと辛い。
メモ帳に貼り付けて検索すれば事足りるのだが、やっぱりここはPowerShellでやってみたい。
幸いファイル群から文字列を検索してハイライト表示するスクリプトが以下で公開されていた。
Wes' Puzzling Blog - Powershell script to find strings and highlight them in the output
(通常はこちらのほうが使いでがあると思われる。)
とりあえずこれをそのまま利用させていただいて単純な文字列からのパターン検索に変更した。
やっつけで変更したので中身はほとんど理解していない・・・。
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 | function Write-HostAndHighlightPattern( [string] $pattern = "" , [string] $inputtext = "" , [switch] $caseSensitive = $false ) { if ($pattern -eq $null -or $pattern -eq "") { Write-Error "Please provide a search pattern!" ; return } $regexPattern = $pattern if($caseSensitive -eq $false) { $regexPattern = "(?i)$regexPattern" } $regex = New-Object System.Text.RegularExpressions.Regex $regexPattern $index = 0 while($index -lt $inputText.Length) { $match = $regex.Match($inputText, $index) if($match.Success -and $match.Length -gt 0) { Write-Host $inputText.SubString( $index, $match.Index - $index) -nonewline Write-Host $match.Value.ToString() -Foreground Red -nonewline $index = $match.Index + $match.Length } else { Write-Host $inputText.SubString($index) -nonewline $index = $inputText.Length } } } Write-HostAndHighlightPattern "system32" $env:path |
結果
0 件のコメント:
コメントを投稿