1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Windows標準機能だけで高速置換する

Last updated at Posted at 2022-02-08

Qiitaで初めて書いてみる記事です。

バッチファイルでテキストを置換する記事がいくつかあるけど
10000行とかのテキストファイルを置換するときに結構時間がかかるので改善してみました。

AAA.txtに「before」という文字があって、それを「after」に
置換して、BBB.txtに出力するだけの処理です。

old.bat
@echo off

setlocal enabledelayedexpansion

for /f "delims=" %%r in (D:\AAA.txt) do (
	set line=%%r
	echo !line:before=after! >> D:\BBB.txt
)

new.bat
@echo off

setlocal enabledelayedexpansion

(
for /f "delims=" %%r in (D:\AAA.txt) do (
	set line=%%r
	echo !line:before=after! 
)
)>> D:\BBB.txt

あまり違いがないかもしれないですが、()が増えたのとBBB.txtに出力するタイミングが変わります。

old.batでは1行ごとにファイルハンドルをオープンクローズしていますが
new.batではいったん全部置換してから最終的にファイル出力しています。

10000行くらいのファイルでold.batでは1分くらいかかっていましたが、
数秒で同じ結果が出力できます。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?