概要
本稿では、ネットワーク上の複数のディレクトリに対して、
指定日付のファイルが存在するかを確認するためのバッチプログラムについて紹介します。
このプログラムにより、ディレクトリを個別に確認する手間を省き、作業の効率化を図ることができます。
プログラム仕様
以下の仕様に基づいてバッチファイルを作成しています。
- 複数のネットワークディレクトリにアクセスする
dir
コマンドを用いてディレクトリ内のファイル情報を取得する- 取得した情報をテキストファイルに出力する
前提条件
本プログラムを実行するために、以下の環境・条件を整えておく必要があります。
- Windows 10がインストールされたPC
- ネットワークディレクトリへのアクセス権限
- バッチファイルの出力先として使用できるローカルディレクトリ
バッチファイルの内容
以下に、実際のバッチファイルのコードを示します。
REM 処理日付表示
set CURRENTDATE=%date:~0,4%%date:~5,2%%date:~8,2%
REM 出力場所指定
set SAVEDIR=%~dp0%CURRENTDATE%.txt
REM 新規ファイル作成(同名ファイルが存在する場合は上書き)
echo %CURRENTDIR%処理 > %SAVEDIR%
REM 対象ディレクトリを指定
CALL :MAIN \\192.168.1.10\netdir1
CALL :MAIN \\192.168.1.10\netdir2
CALL :MAIN \\192.168.1.11\netdir11
exit /b
:MAIN
echo * START ************************************************* >> %SAVEDIR%
echo %1 >> %SAVEDIR%
REM ネットワークドライブに割り当て
pushd %1
REM ディレクトリ情報を取得(サブディレクトリも含める)
dir * /a-d/s >> %SAVEDIR%
REM 割り当て解除のためローカルディレクトリへ移動
c:
popd %1
echo * END ************************************************* >> %SAVEDIR%
timeout /nobreak 1
exit /b
処理内容の解説
1. 日付の取得
現在の日付を「YYYYMMDD」形式で取得しています。
set CURRENTDATE=%date:~0,4%%date:~5,2%%date:~8,2%
2. 出力ファイルのパス設定
実行中のバッチファイルと同一ディレクトリに、取得した日付を名前としたテキストファイルを生成します。
set SAVEDIR=%~dp0%CURRENTDATE%.txt
3. 出力ファイルの初期化
既存のファイルがある場合は上書きして新規作成します。
echo %CURRENTDIR%処理 > %SAVEDIR%
4. 処理対象ディレクトリの指定
:MAIN
ラベルを使用し、個別にディレクトリの処理を呼び出しています。
CALL :MAIN \\192.168.1.10\netdir1
5. ネットワークディレクトリの割り当て
pushd
コマンドを使用することで、ネットワークディレクトリを自動的にドライブに割り当てます。
このコマンドは、net use
コマンドと同様の効果を持ちますが、簡便かつ安定した動作が期待できるため、本プログラムでは pushd
を採用しています。
pushd %1
6. ディレクトリ情報の取得
dir
コマンドに /a-d/s
オプションを付加し、サブディレクトリも含めてファイル情報を再帰的に出力します。
dir * /a-d/s >> %SAVEDIR%
7. ネットワークドライブの解除
ドライブ解除を正しく行うため、事前にローカルドライブ(例:Cドライブ)へ一時的に移動します。
c:
popd %1
効果
このバッチファイルの利用により、従来手動で20〜30分程度要していた作業を、2〜3分に短縮することができました。
参考文献
以下、余白
コメント