バッチファイルで孫ディレクトリにあるファイルを操作する
筆者の実行環境
Windows 10
ディレクトリ構成
animal
┣ dog
┃ └ dogData
┃ └ dogName.txt
┣ cat
┃ └ catDdata
┃ └ catName.txt
┣ rabbit
┃ └ rabbitData
┃ └ rabbitName.txt
┗ fileCopy.bat
やりたいこと
dogName.txt, catName.txt, rabbitName.txtを/animal/直下にコピーする。
バッチファイル実装
@REM fileCopy.bat
@echo off
@REM 1つ下の階層(例: /dog/)のディレクトリを対象とする
for /d %%i in (*) do (
pushd .
cd %%i
@REM さらに1つ下の階層(例: /dog/dogData/)を対象とする
for /d %%j in (*) do (
cd %%j
@REM コピーしたい対象のファイル(例: /dog/dogData/dogName.txt)を操作する
for %%f in (*.txt) do (
@REM ファイルコピー
copy "%%~nf.txt" "%%~nf_copy.txt"
@REM コピーしたファイルを/animal/直下に移動する
move "%%~nf_copy.txt" ../../
popd
)
)
)
pause
バッチファイル実行後のディレクトリ
animal
┣ dog
┃ └ dogData
┃ └ dogName.txt
┣ cat
┃ └ catDdata
┃ └ catName.txt
┣ rabbit
┃ └ rabbitData
┃ └ rabbitName.txt
┣ fileCopy.bat
┣ dogName_copy.txt
┣ catName_copy.txt
┗ rabbitName_copy.txt