ファイルを開き、そのファイルの非常に簡単な検索と置換を行い、検索と置換を行ったファイルを保存 (上書き) したいバッチファイルがあります。
ファイルの最初の行を読む方法を知っています:
set /p file= < file.txt
しかし、ファイル全体を読み取り、検索/置換を行うバッチ方式に苦労しています。
ファイルを開き、そのファイルの非常に簡単な検索と置換を行い、検索と置換を行ったファイルを保存 (上書き) したいバッチファイルがあります。
ファイルの最初の行を読む方法を知っています:
set /p file= < file.txt
しかし、ファイル全体を読み取り、検索/置換を行うバッチ方式に苦労しています。
非常に単純な検索と置換の意味が明確でないため、決定的な答えを出すのは困難ですが、必要なすべての要素は次のとおりです。
ファイルの読み取り
次のコマンドを使用して、ファイルを 1 行ずつ読み取ることができますfor /f
。
for /f %%a in (myfile.txt) do (
echo %%a
)
テキストを置換
テキストの出現を置き換える方法を知っている1つの方法を次に示します。
SETLOCAL ENABLEDELAYEDEXPANSION
for /f "delims=" %%a in (myfile.txt) do (
SET s=%%a
SET s=!s:stringtoreplace=replacementstring!
echo !s!
)
myfile.txt
これにより、stringtoreplaceのすべての行が出力され、replacementstringに置き換えられます。
ファイルを上書きする
最初に新しい一時ファイルに書き込み、次に元のファイルを新しい一時ファイルに置き換えることを検討してください。
上記の例では、ステートメント>>yourtempfilename.txt
の後に追加するのと同じくらい簡単です。echo
ファイルの行をフィルタリングする
ファイルからいくつかの行を単に削除したい場合は、findstr
コマンド ( help findstr
) を検討することもできます。
ファイル内で検索と置換を実行するか、ハードコードされた文字列または VBScript (バッチ スクリプトで実行可能) を使用した正規表現を使用できます。
ハードコードされた検索基準を使用した検索と置換の例を次に示します。
<job>
<script language="JavaScript">
var fso = new ActiveXObject("Scripting.FileSystemObject");
var MyFile = fso.GetFile("c:\\file.json");
var txt = MyFile.OpenAsTextStream(1).ReadAll();
txt = txt.replace("criteria", "replacing value");
WScript.echo("Replaced File"+txt);
var out = MyFile.OpenAsTextStream(2);
out.write(txt);
</script>
このスクリプトを replace.wsf という名前のファイルに保存します。その後、次のようにバッチ ファイルからスクリプトを実行できます (Windows オペレーティング システムの場合)。
pushd %~dp0
cscript c:\replace.wsf
正規表現に基づいて検索と置換を行う必要がある場合は、次の例を参照することをお勧めします: regex search replace in batch