見出し画像

バッチファイルで孫ディレクトリにあるファイルを操作する

筆者の実行環境

  • 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 



この記事が気に入ったらサポートをしてみませんか?