この文字列から「.txt」の前の最後の4桁を抽出したい:
2017年9月14日12:00:27-mtbill_post_201709141058.txt7577_配信済み:OK
これらはそのログが作成された時刻を表しており、10:58として表示したいと思います。表示されているものと同様の複数行のファイルから読み取りました。
Get-Content file.txt | ForEach-Object {
$splitUp = $_ -split "_"
$SC=$splitUp[2] -split "_"
Write-Host $SC
$len = $SC.Length
$folder2 = $SC.Substring($len - 12, 42)
}
文字列を「_」で区切り、取得した文字列の文字数を数え、「Substring」コマンドで区切ってみましたが、以下のエラーが発生します。
「2」引数を使用して「Substring」を呼び出す際の例外:「StartIndexをゼロ未満にすることはできません。パラメーター名:startIndex」
行:6文字:5 + $ folder2 = $ SC.Substring($ len-12、42)
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- CategoryInfo:NotSpecified :( :) []、MethodInvocationException
- FullyQualifiedErrorId:ArgumentOutOfRangeException
正規表現の「先読み」を使用できます。
検索しているのは、4桁の数字とそれに続く「.txt」のセットです。
$string = "09/14/2017 12:00:27 - mtbill_post_201709141058.txt 7577_Delivered: OK"
$regex = "\d{4}(?=\.txt)"
[regex]::matches($string, $regex).value
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加