ここではWindowsのバッチファイルを用いてディレクトリの操作をする方法について解説しています。
この記事の対象
ディレクトリの作成
バッチファイルを使用して、新しいディレクトリを作成することができます。以下はその例です。
@echo off
set "dir_name=NewDir"
mkdir "%dir_name%"
上記のプログラムは、dir_name変数に作成するディレクトリの名前を指定します。その後、mkdirコマンドを使用してディレクトリを作成しています。
ディレクトリの確認
@echo off
set LOG_FILE=log.txt
set DIRECTORY=C:\hoge\hogehoge\test
if exist %DIRECTORY% (
echo Directory exists >> %LOG_FILE%
) else (
echo Directory does not exist >> %LOG_FILE%
)
上記のプログラムでは、「LOG_FILE」と「DIRECTORY」という変数を使用しています。LOG_FILE変数にはログを記録するtxtファイルのパスを指定し、DIRECTORY変数にはチェックするディレクトリのパスを指定しています。
ディレクトリ内のファイル一覧を出力
バッチファイルを使用して、特定のディレクトリ内のファイル一覧を取得することができます。以下はその例です。
@echo off
set "dir_path=C:\hoge\hoge"
set "output_file=files.txt"
dir "%dir_path%" > "%output_file%"
このバッチファイルでは、dir_path変数に対象のディレクトリのパスを指定し、output_file変数に保存するテキストファイルの名前を指定しています。
次に、dirコマンドを使用してディレクトリのファイル一覧を取得し、リダイレクション 「>」 を使用して指定したテキストファイルに結果を書き込んでいます。
実行すると、指定したディレクトリ内のファイル一覧がfiles.txtという名前のテキストファイルに保存されます。これでファイルの一覧が簡単に確認できます。
ディレクトリの削除
バッチファイルを使用して、指定したディレクトリを削除することができます。以下はその例です。
@echo off
set "dir_path=C:\hoge\hoge"
rd /s /q "%dir_path%"
このバッチファイルでは、dir_path変数に削除するディレクトリのパスを指定します。その後、rdコマンドを使用してディレクトリを削除します。/sオプションはサブディレクトリを再帰的に削除し、/qオプションは確認メッセージを表示せずに削除を実行しています。
【おまけ】複数ディレクトリの作成
作成してたいフォルダをまとめて作成するバッチファイルを作成しました。作成したいディレクトリを別ファイルで定義して、後から簡単に変更できるようにしています。
定義ファイルとバッチファイルは同じ場所にある前提です。
create_folders.bat:
@echo off
setlocal EnableExtensions EnableDelayedExpansion
REM 日本語フォルダ名を扱いやすくする
chcp 65001 > nul
REM ===== 基本設定 =====
REM 作成する親フォルダ名
set "ROOT=workfolder"
REM フォルダ一覧ファイル
set "FOLDER_LIST=folders.txt"
REM ===== フォルダ一覧ファイルの存在確認 =====
if not exist "%FOLDER_LIST%" (
echo エラー: %FOLDER_LIST% が見つかりません。
pause
exit /b 1
)
REM ===== 親フォルダ作成 =====
if not exist "%ROOT%" (
mkdir "%ROOT%"
)
REM ===== フォルダ一覧を読み込んで作成 =====
for /f "usebackq delims=" %%D in ("%FOLDER_LIST%") do (
set "LINE=%%D"
REM 空行は無視
if not "!LINE!"=="" (
REM # で始まる行はコメントとして無視
if not "!LINE:~0,1!"=="#" (
if not exist "%ROOT%\!LINE!" (
mkdir "%ROOT%\!LINE!"
echo 作成: %ROOT%\!LINE!
) else (
echo 既に存在: %ROOT%\!LINE!
)
)
)
)
echo.
echo フォルダ作成が完了しました。
endlocal
定義ファイルは以下です。
folders.txt:
# 00-作業内容
00-作業内容
# 01-test
01-test
01-test\00-Before
01-test\01-After
# 02-dev
02-dev
02-dev\00-Before
02-dev\01-After
