HOWTO · Batch

バッチ スクリプトでファイルからテキストを置き換える

このチュートリアルでは、バッチ スクリプトでファイルからテキストを置き換える方法について説明します。

このページの内容

この記事では、ファイル内のテキストを置換するためのいくつかの方法を紹介します。2つの異なる方法を見ていきます。

最初の方法は、バッチスクリプトのみでタスクを実行する方法であり、2番目の方法はWindows PowerShellによるソリューションを提供します。

制限された外部インターネットアクセスとソフトウェアのインストールが制限されているWindowsサーバーで作業しているシナリオを考えてみましょう。

TXTファイル内の特定のデータのすべての出現箇所を削除するというタスクが割り当てられました。大きなファイルでこれを手動で行うと、手間暇がかかり効率が悪いです。

私たちの方法が登場する場所は、Windowsマシン上で利用可能なツール、CMDとPowerShellのみを使用して目標を達成できるようになるということです。

以下の内容を持つテキストファイルがあるとします。

Test.txt

This is text that is saved in a text file. This is an update. ,,,,,,,,,,,,

これらのコマンドを空の文字で置き換えることにします。

ファイル内のテキストを置換するためのバッチスクリプトの使用

バッチスクリプト:

@echo off
FOR /f "tokens=*" %%s IN (Test.txt) DO (
  SET Texts=%%s
)
set Texts=%Texts:,=%

FOR /F "tokens=* delims=" %%x IN (Test.txt) DO SET text=%%x
ECHO %Texts% > "G:\BATCH\Test.txt" :: the path location of the txt file

まず、行FOR /f "tokens=*" %%s IN (Test.txt) DO (を使ってファイルを読み込みます。そして、行SET Texts=%%sを介して、ファイルのテキストで文字列変数を初期化します。行set Texts=%Texts:,=%を通じて、カンマを空の文字で置き換えます。

最後に、テキストを再度ファイルに入れます。上記のコードを実行すると、以下のようにファイルの内容が変更されます。

This is text that is saved in a text file. This is an update.

ファイル内のテキストを置換するためのWindows PowerShellの使用

この方法も、前の方法と同じ結果を提供します。この方法では、バッチスクリプトの中でPowerShellを使用しました。この方法の例コードは以下のようになります。

powershell -Command "(gc Test.txt) -replace ',', '' | Out-File -encoding ASCII Test.txt"

このコードを実行すると、以下のようにファイルの内容が変更されます。

This is text that is saved in a text file. This is an update.

この方法では、PowerShellの-replace演算子を使用してテキストを置換しています。このコマンドはファイル(Test.txt)の内容を読み取り、カンマを空の文字で置き換え、更新された内容をTest.txtに保存します。

結論

バッチスクリプトとWindows PowerShellを活用することで、効率的なテキスト置換タスクの自動化が可能となります。

これらの方法は、ファイルのサイズや制限付きアクセスにより手動での編集が実用的でないシナリオで有用なツールとなります。

大きなファイルの操作や制約のある環境で作業する場合でも、これらのテクニックは効率的なソリューションを提供します。

バッチスクリプトとPowerShellのパワーを駆使して、テキスト置換の課題に取り組む際に生産性と効率性を向上させることができます。