実現したいこと
テキストを自動で編集出来るようにしたいです。
ファイル内の各行に特定の文字列が含まれている場合は何もしないまたは特定の処理を行って別のファイルに書き込む、特定の文字列が含まれていない場合はそのまま別のファイルに書き込む、という機能のバッチファイルが作成したいものです。
具体的には、
行の中に特定の文字列が含まれる場合、以下の処理を0個以上実行する。何を実行するかは含まれる文字列によって決定する。
・特定の文字列を削除する。
・特定の文字列を別の文字列に置換する。
・先頭または末尾から決められた数の文字を削除する。
・先頭または末尾に文字列を追加する。
・行の内容を別のファイルに書き込む。
・その行の後に空行または文字が入力された行を1行以上追加する。
特定の文字列が含まれない場合は、元の行の内容をそのまま別のファイルに書き込む。
といった感じです。
発生している問題・分からないこと
テキストファイルの各行の内容が条件を満たしているかどうか判定する方法が分かりません。
findで特定の文字列を探させてerrorlevelで判定する方法を試してみたのですが、うまく動作しませんでした。
また、これは必須ではないのですが、
現在はforループで1行ずつ処理させており、元のテキストの行数が多いので実行に時間がかかっています。
編集が必要な行は多くても50行程度なので、全行を読み込むのは無駄な気がしています。もっと効率的な方法があればそれも回答して頂けると助かります。
下記のコードは「xcv」を含む行の先頭2文字を削除するというだけのものです。
これは例であり、実際に使用するものではありません。
該当のソースコード
@echo off setlocal enabledelayedexpansion set write=0 for /f "delims=" %%a in (z.txt) do ( set line=%%a find "xcv" %%a >nul 2>&1 if %errorlevel%==0 ( set line=%line:~2% ) if %write%==0 ( echo %line%> b.txt set write=1 ) else ( echo %line%>> b.txt ) ) endlocal
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
詳細はこちらです。
https://teratail.com/questions/fog9eznsow5fb5
追記
「バッチ bat 文字列 判定」等の単語で検索して出てきた情報を色々試してはみたものの駄目でした。
errorlevelを使用しているのはその影響です。
補足
特になし

回答2件
あなたの回答
tips
プレビュー