Windowsバッチファイルで楽をする:forを使ったファイルのリストアップ方法あれこれ

Windows
記事内に広告が含まれています。

Windowsバッチファイルは、単純な作業を自動化するだけでなく、複雑なタスクを効率的に処理するための強力なツールです。
ファイルのリストアップといえばdirコマンドですが、forコマンドを活用すると色々なことができます。
forループは、その能力を最大限に引き出します。
ここでは、より詳細な例を通じて、その使い方を掘り下げていきます。

詳細なバッチファイルの例

1. ファイルの一覧を取得し、特定の操作を実行する

@echo off
setlocal enabledelayedexpansion
for /r %%i in (*) do (
  set "filename=%%~nxi"
  if "!filename:~0,1!" neq "." (
    echo Processing: %%i
    rem ここに処理を追加
  )
)
endlocal

このバッチファイルは、隠しファイルを除くすべてのファイルをリストアップし、それぞれに対して特定の操作を実行します。
setlocal enabledelayedexpansionは変数の遅延展開を有効にし、!filename:~0,1!はファイル名の最初の文字をチェックします。

2. ディレクトリ内の特定のファイルを検索し、別のディレクトリにコピーする

@echo off
for /d %%d in (*) do (
  for %%f in (%%d\*.log) do (
    echo Found log file: %%f
    copy %%f C:\logs_backup\
  )
)

このスクリプトは、すべてのサブディレクトリを検索し、.logファイルを見つけ次第、それをバックアップディレクトリにコピーします。

3. ファイルのサイズに基づいて異なるアクションを実行する

@echo off
for /r %%i in (*) do (
  if %%~zi gtr 1048576 (
    echo Large file: %%i
  ) else if %%~zi lss 1024 (
    echo Small file: %%i
  ) else (
    echo Medium file: %%i
  )
)

この例では、ファイルのサイズが1MB以上であれば「Large file」と表示し、1KB未満であれば「Small file」と表示し、それ以外の場合は「Medium file」と表示します。

4. ファイルの拡張子に応じて異なるコマンドを実行する

@echo off
for %%i in (*.*) do (
  set "ext=%%~xi"
  if /i "!ext!"==".txt" (
    echo Text file: %%i
  ) else if /i "!ext!"==".jpg" (
    echo Image file: %%i
  ) else (
    echo Other file: %%i
  )
)

このバッチファイルは、拡張子が.txtのファイルは「Text file」と表示し、.jpgのファイルは「Image file」と表示し、それ以外のファイルは「Other file」と表示します。

まとめ

これらの例は、forを使用してWindowsバッチファイルで行うことができる多様な操作を示しています。
これらのスクリプトは、日常の作業を自動化し、効率を向上させるためにカスタマイズして使用することができます。
バッチファイルを使用する際には、常に慎重にテストを行い、予期せぬ結果を避けるためにバックアップを取ることを忘れないでください。
効率的な作業のために、これらのテクニックを活用してみてください。

免責規定

この記事で提供される情報は、一般的なガイダンスを目的としており、すべての環境やシステムでの動作を保証するものではありません。
OSのバージョンやリリースによっては、記載されているコマンドが実行できない、または異なる結果をもたらす可能性があります。
また、会社内のパソコンなど、ポリシーや権限によっては実行できない場合があります。
実行には管理者権限が必要な場合が多いため、注意が必要です。
この記事の情報を使用することによって生じる問題や結果について、筆者およびサイト管理者は責任を負いません。
すべての操作は自己責任で行ってください。

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

コメント

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