質問: ### 前提・実現したいこと 前回も似たような質問をさせていただきました。 何度もすみません。 バッチファイルで複数ファイルの特定行の置換がしたいです。 単一ファイルの置換はネット上に溢れていますが、複数ファイルに関しては特に変数に関して書かれていません。 なんとか、一時ファイルを作らずにワンステップで元ファイルに置換を反映扠せられないでしょうか。 現状では、本文の二重出力か置換行のみしか出力されません。 また、リダイレクトの出力先に変数を指定しているので、ファイルのリネームにも一手間かかります。 前回はパワーシェルをご紹介頂きましたが、これは、考え方の問題だと思うので、バッチファイルでの問題解決方法を教えてください。 よろしくおねがいします。 ### 発生している問題・エラーメッセージ ``` echo xxx >> %%a.txt → aaa.con.txt or echo xxx >> 1%%a → 1aaa.con いづれにせよ次はどう余分な名前部分をオミットするかです。 ファイル名のリネームについてはわかるのですが、特定部分を削除する方法がわかりません。 ``` ### 該当のソースコード ``` @echo off cd %~dp0 for %%a in (*.con) do ( for /f "delims=" %%b in (%%a) do ( set line=%%b echo !line:0=1! >> %%b←この行をなんとかしたい。 ) ) ``` ### 試したこと ### 補足情報(言語/FW/ツール等のバージョンなど) より詳細な情報
回答: サイトの趣旨の則って、自己解決の方法を記載します。 需要があるかわからず、あまりエレガントな解法でもありませんが記載します。 上記のソースコードの前にバックアップと同様の手順を行い、別のディレクトリに出力し、後にオリジナルフォルダを削除、新規フォルダをリネームという方法で解決出来ました。 どうせバッチで自動化するので、手順自体は煩雑ですがなんとかバッチのみで解決しました。 参考までに以下ソースコード ``` @echo off rem カレントディレクトリを取得 cd %~dp0 rem 予備ファイルの作成 mkdir ctest1 rem 作業フォルダに移行 cd test1 for %%a in (*.con) do ( for /f "delims=" %%b in (%%a) do ( set line=%%b echo !line:0=1! >> ..\ctest1 ) ) rem 親ディレクトリに移動 rem 後片付け echo Y | rd /s test1 rename ctest1 test1 pause ```