複数フォルダからファイルを抽出する(Robocopy)

gocopy.bat
@echo off
rem ファイルサイズが大きい為、robocopyを使用する。
rem Forfilesでネットワークドライブを使う為、
rem フォルダは2つとも仮想ドライブとしてマウントする。
rem
rem 引数1:送り元のネットワークドライブ → Z:\
rem 引数2:送り先のネットワークドライブ → Y:\
rem 引数3:対象ファイルのフィルタ
rem
rem うまく動かないからドライブ頭打ちの為、
rem ネットワークドライブあったら削除している
rem バージョン:20190316

rem エラーチェック:引数が無かったら実行しない
rem TIP:%1ではなく%~1のチルダは、引数のダブルクォーテーション
rem を削除するコマンド
if "%~1" == "" GOTO ERR1
if "%~2" == "" GOTO ERR1
if "%~3" == "" GOTO ERR1
 
if not exist %1 GOTO ERR2
if not exist %2 GOTO ERR2

rem とにかくネットワークドライブを削除
net use z: /d > nul 2>&1

rem 引数1をマウントする
net use z: %1 > nul 2>&1

rem 引数をセットする

rem コピーファイルの数を表示する
if exist tempnum.txt del tempnum.txt
forfiles /P Z:\ /M %3 /S /C "cmd /c echo @path" | find /c /v "" > tempnum.txt
set /p filenum= < tempnum.txt

rem AnimeLockerのみ有効:
rem 必ず同一ファイルが2回見つかるので、割り算を追加
set /a filenum=filenum/2 > nul
 
echo -------------------------------
echo コピー元:%1
echo コピー先:%2
echo 対象ファイル:%3
echo 対象ファイル数:%filenum%
echo -------------------------------
ping localhost -n 4 > nul

rem コピー実行
forfiles /P Z:\ /M %3 /S /C "cmd /c xcopy /d /v @path %2"

rem ネットワークドライブを解除する
net use z: /delete > nul
 
goto :EOF

rem 引数が無いぞエラー
:ERR1
echo.
echo エラー:引数指定が無いか足りません。
pause
 
goto :EOF

rem ディレクトリが無いぞエラー
:ERR2
echo.
echo エラー:引数指定のディレクトリがありません。
ALBackup.bat
@echo off
echo ***************************
echo.
echo   バックアップバッチ
echo.
echo ***************************
 
call gocopy.bat "\\RecSrv\0c99-AAAAAA" "\\sylvia\video\AAAAAA" *.mp4
call gocopy.bat "\\RecSrv\80d3-BBBBBB" "\\sylvia\video\BBBBBB" *.mp4
call gocopy.bat "\\RecSrv\ad54-CCCCCC" "\\sylvia\video\CCCCCC" *.mp4
call gocopy.bat "\\RecSrv\b7af-DDDDDD" "\\sylvia\video\DDDDDD" *.mp4
call gocopy.bat "\\RecSrv\d321-EEEEEE" "\\sylvia\video\EEEEEE" *.mp4
 
call gocopy.bat "\\RecSrv\84a5-FFFFFF" "\\sylvia\music\FFFFFF" *.mp4
call gocopy.bat "\\RecSrv\7c71-GGGGGG" "\\sylvia\music\GGGGGG" *.mp4
call gocopy.bat "\\RecSrv\7c71-GGGGGG" "\\sylvia\music\GGGGGG" *.aac
rem call gocopy.bat "" "" *.mp4
rem call gocopy.bat "" "" *.mp4
 
echo.
echo ***************************
echo.
echo   コピー終了しました!
echo   削除してください。
echo.
echo ***************************
pause
  • memo/pc/mpfolgetfile.txt
  • 最終更新: 2025/10/19 06:06
  • by htmikan