@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 エラー:引数指定のディレクトリがありません。