バッチファイル

バッチファイル 上位フォルダのバッチを実行する

バッチファイル

こんにちは! 健史です。

Windowsでフォルダ内のバッチから上位フォルダにあるバッチファイルを実行する方法です。

実行するバッチと同じフォルダ内であれば、CALL TEST1.bat
1つ上のフォルダであれば、       CALL ..\TEST1.bat
2つ上のフォルダであれば、       CALL ..\..\TEST1.bat
3つ上のフォルダであれば、       CALL ..\..\..\TEST1.bat

'\'は半角の'¥'です。
わかりやすく全角で記述すると'..¥'を付けるだけです。

具体例で説明いたします。

スポンサーリンク

複数構成フォルダで上位フォルダのバッチを実行

フォルダ構成

TEMP20
階層-1
--階層-1にあるバッチ.bat
--階層-2
---階層-2にあるバッチ.bat
---階層-3
----階層-3にあるバッチ.bat
----階層-3にあるバッチ_見やすいバージョン.bat

※太字は、フォルダです。



バッチファイルを実行

◆階層-1にあるバッチ.bat

echo 階層-1にあるバッチ:CALLされました。フォルダは以下です。
echo 階層-1にあるバッチ:%~dp0

◆階層-2にあるバッチ.bat

echo 階層-2にあるバッチ:CALLされました。フォルダは以下です。
echo 階層-2にあるバッチ:%~dp0

◆階層-3にあるバッチ.bat

echo off

echo 階層-3にあるバッチ:実行を開始します。フォルダは以下です。
echo 階層-3にあるバッチ:%~dp0
echo 階層-3にあるバッチ:階層-2にあるバッチをCALLします。
CALL ..\階層-2にあるバッチ.bat
echo 階層-3にあるバッチ:階層-1にあるバッチをCALLします。
CALL ..\..\階層-1にあるバッチ.bat

pause

今回、[階層-3にあるバッチ.bat]から、[階層-2にあるバッチ.bat][階層-1にあるバッチ.bat]を実行します。

見ずらいので、見やすいバージョンを実行します。

echo off
echo 階層-3にあるバッチ:実行を開始します。フォルダは以下です。
echo 階層-3にあるバッチ:%~dp0
echo;

echo 階層-3にあるバッチ:階層-2にあるバッチをCALLします。
echo;
CALL ..\階層-2にあるバッチ.bat
echo; 

echo 階層-3にあるバッチ:階層-1にあるバッチをCALLします。
echo;
CALL ..\..\階層-1にあるバッチ.bat
echo; 

pause

応用編 タイムスタンプ用のバッチ

フォルダ構成



バッチファイルを実行

◆階層-1にあるバッチ.bat

set YYYY=%date:~0,4%
set MM=%date:~5,2%
set DD=%date:~8,2%
set YYYYMMDD=%YYYY%%MM%%DD%
echo 階層-1にあるバッチ TIMESTAMP.bat:%YYYYMMDD%

set time2=%time: =0%
set HH=%time2:~0,2%
set MM=%time2:~3,2%
set SS=%time2:~6,2%
set HHMMSS=%HH%%MM%%SS%
echo 階層-1にあるバッチ TIMESTAMP.bat:%HHMMSS%

set YMD_HMS=%YYYYMMDD%_%HHMMSS%
echo 階層-1にあるバッチ TIMESTAMP.bat:%YMD_HMS%

◆階層-3にあるバッチ.bat

echo off

echo 階層-3にあるバッチ:実行を開始します。フォルダは以下です。
echo 階層-3にあるバッチ:%~dp0
echo 階層-3にあるバッチ:階層-1にあるバッチをCALLします。
CALL ..\..\TIMESTAMP.bat

echo 階層-3にあるバッチ:%YYYYMMDD%
echo 階層-3にあるバッチ:%HHMMSS%
echo 階層-3にあるバッチ:%YMD_HMS%

pause


実行結果です。

[階層-3にあるバッチ.bat]では[TIMESTAMP.bat]で生成された値を[%YYYYMMDD%]、[%HHMMSS%]、[%YMD_HMS%]で使用できています。

バッチでファイルを出力する際に、タイムスタンプをアンダーバー付きで付けたい場合は
FILE01_%YYYYMMDD%.csv
FILE01_%YYYYMMDD%%HHMMSS%.csv
FILE01_%YMD_HMS%.csv
などと記述します。


実際に使用される場合には、echoやpauseを[rem]でコメントアウトされるか、削除して頂ければと思います。

バッチファイル
スポンサーリンク
- 面白かったらシェアお願いします! -
健史をフォローする
自分で改善

コメント