目次
ファイル内のテキスト一覧から指定した文字数以下の文字列を抜き出す方法
こんにちは。thimiです。
今日は、ファイル内の文字列を抽出する方法です。
前回作成したファイル名のリスト一覧から、指定した文字数以下を
抜き出してみます。
https://thimi-lifehack.com/create_filelist/
Extract.bat | |
---|---|
@echo off | コマンドプロンプトへ非表示 |
rem 「Extract_list.csv」ファイルが既に存在する場合は削除 | rem:コメント(覚書記載) |
if exist Extract_list.csv del Extract_list.csv | 既にファイルがある場合は 一度削除する処理 |
for /F "tokens=* delims== eol=@ " %%l IN ('('findstr /R "^%1" filel_ist.csv') do ( | For文で繰り返し処理を実施 |
filel_ist.csvファイルの先頭行から正規表現で行単位で文字を取得 | |
set string=%%l | stringに取得した文字を保存 |
call:sub | subを呼び出し |
) | |
exit | |
:sub | :sub内容 |
echo %string:~-11,11%>>Extract_list.csv | stringの中身の後ろから数えて11番目から、11文字を抜き出してExtract_list.csvに書き出し |
バッチファイルの内容を簡単に説明します。
「for」コマンド
ループ処理コマンドです。
オプションとして「tokens=*」を追加することで、全てのトークンを取得して
変数「%%l」に代入しています。
※今回はすべて取得していますが、ここで「tokens=1,2,4」のように1番目と2番目と
4番目だけ取得!という設定も出来ます。
オプションとして「delims」を追加することで、トークンの区切り文字を指定します。
オプションとして「eol」を追加することで、無視する行の文字を指定します。
今回は、文字列の中に無い文字「@」を指定することで、一行取得しています。
「findstr」コマンド
指定されたパターンの文字列を検索するコマンドです。
オプションとして「/R」を追加することで、検索文字列を正規表現で検索します。
オプションとして「^」を追加することで、先頭文字列から検索します。
「%1」はバッチファイルで使用する、第一引数として指定します。
「set」コマンド
実行中の環境変数の値を設定します。
「%string:~-*,●%」コマンド
stringに設定されている文字列の後ろから数えて
*番目から●文字まで取得します。
※前から数えて取得したい場合は、「%string:~*,●%」と記載すればOK。
実行して、下記ファイル名を取得しました。