Windowsバッチファイルで楽をする:バッチファイルにおけるFORコマンドの使い方

Windows
記事内に広告が含まれています。
スポンサーリンク

Windowsのコマンドラインインターフェイスでは、FORコマンドは非常に強力なツールであり、様々なバッチ処理を自動化するために使用されます。
この記事では、初心者でも理解しやすいように、FORコマンドの基本的な使い方と具体的な例を紹介します。

スポンサーリンク

1. 基本的なループ

FORコマンドの最も基本的な使用法は、一連の数値や文字列に対して繰り返し処理を行うことです。
例えば、以下のバッチファイルは、1から5までの数値を出力します。

@echo off
FOR %%i IN (1 2 3 4 5) DO (
    echo %%i
)

2. ファイルセットに対する操作

FORコマンドは、特定のパターンにマッチするファイル群に対して処理を行うことができます。
例えば、以下のコードは、現在のディレクトリにあるすべてのテキストファイルの内容を表示します。

@echo off
FOR %%g IN (*.txt) DO (
    type %%g
)

3. ディレクトリの繰り返し処理

ディレクトリに対する繰り返し処理も可能です。
以下の例では、サブディレクトリをリストアップします。

@echo off
FOR /D %%d IN (*) DO (
    echo %%d
)

4. 結果セットの処理

FORコマンドを使用して、他のコマンドの出力をループ処理することもできます。
以下の例では、dirコマンドの出力を処理しています。

@echo off
FOR /F "tokens=*" %%f IN ('dir /b') DO (
    echo %%f
)

5. 数値の範囲に対する繰り返し

数値の範囲に対する繰り返し処理は、以下のように行います。

@echo off
FOR /L %%n IN (1,1,10) DO (
    echo %%n
)

6. 条件付きループ

条件付きループを使用すると、特定の条件が満たされるまでループを継続することができます。
以下の例では、変数%%xが5未満の間、ループを続けます。

@echo off
SET /A x=0
FOR /L %%x IN (1,1,10) DO (
    IF %%x LSS 5 (
        echo %%x
    )
)

7. 変数の変換と使用

ループ内で変数を加工して使用することも可能です。
以下の例では、ファイル名の拡張子を変更しています。

@echo off
FOR %%f IN (*.txt) DO (
    REN %%f %%~nf.bak
)

8. 複数のコマンドの実行

FORループ内で複数のコマンドを実行することもできます。
以下の例では、ファイルのコピーとリネームを行っています。

@echo off
FOR %%f IN (*.txt) DO (
    COPY %%f %%f.bak
    REN %%f %%~nf.old
)

9. テキストファイルに記載の複数のマシン名に対してコマンドの実行

テキストファイルに記載されたマシン名に対して、リモートでコマンドを実行することもできます。
以下の例では、machines.txtに記載された各マシンに対してpingコマンドを実行します。

@echo off
FOR /F %%m IN (machines.txt) DO (
    ping %%m
)

バッチ内でFORコマンドを実行する場合とコマンドプロンプトで直接FORコマンドを実行する場合の違いと注意

バッチファイル内でFORコマンドを使用する場合は、変数を%%iのように二重のパーセント記号で囲む必要があります。
一方、コマンドプロンプトで直接実行する場合は、単一のパーセント記号(%i)を使用します。
また、バッチファイルでは、コマンドの実行前に@echo offを指定することで、コマンド自体が画面に表示されないようにすることが一般的です。

まとめ

FORコマンドは、Windowsバッチファイルにおいて非常に強力なツールです。
上記の例を参考にしながら、独自のニーズに合わせてFORコマンドを活用してみてください。
初心者でも、基本的な構文と例を理解することで、FORコマンドを使いこなすことができるでしょう。
バッチファイルの自動化により、日々の作業を効率化しましょう。

免責規定

OSのバージョンやリリースによっては、実行できない可能性や実行できなくなる可能性のある情報です。
会社内のパソコンなど環境によっては場合にはポリシーや権限により実行できない場合があります。
また実行に管理者の権限が必要な場合があります。
このサイトから得られるすべての情報、コンテンツによって生じるあらゆる問題や結果はすべて自己責任でお願いします。
当サイト管理者は責任の一切を負いません。

最後までお読みいただきありがとうございました。
またお会いしましょう!

コメント

タイトルとURLをコピーしました