robocopyバッチファイル

DATコピーを実施します。

 

@ECHO OFF
@ECHO.

REM **************** 移行フォルダ名指定ファイル ************************
set host=%COMPUTERNAME%
if "%1"=="" (set dirlist=%host%.txt) else (set dirlist=%1)

REM **************** カレントディレクトリ変更 ************************
set dirpath=%~p0
set c_path=%CD%
cd "%dirpath%"

REM **************** ログファイル指定 ************************
set logdir=log
if not exist %logdir% (mkdir %logdir%)
set date2=%date:~-10%
set today=%date2:~0,4%%date2:~5,2%%date2:~8,2%
set now=%time:~0,2%%time:~3,2%
set now=%now: =0%
for %%i IN (%dirlist%) DO @set fname=%%~ni
set logfile=%logdir%\sabun_%fname%-%today%-%now%.log

REM **************** 処理開始 ************************
@ECHO %DATE% %TIME% ***** [%host%] サーバデータ移行処開始 ***** > %logfile%
@ECHO %DATE% %TIME% [%host%] ***** サーバデータ移行処開始 *****
if not exist %dirlist% (@ECHO エラー:移行フォルダリスト [%dirlist%] がありません)
if not exist %dirlist% (@ECHO エラー:移行フォルダリスト [%dirlist%] がありません >> %logfile% & goto end )

REM **************** robocopyのPATHとしてカレントディレクトリを追加 ************************
set PATH="%CD%";%PATH%
if not exist "robocopy.exe" (@ECHO エラー: [robocopy.exe ] コマンドがバッチファイルと同一ディレクトリにありません >> %logfile% & goto end )

REM **************** データコピー開始 *************************
@ECHO ■データコピーを開始します。■ >> %logfile%

REM スペースがあるファイル名に対応させるためデリミッタはTAB
for /F "eol=; TOKENS=1,2,3 delims= " %%A in (%dirlist%) do (
if not exist %%A (@ECHO エラー:[%%A] コピー元ファルダが存在しません && @ECHO エラー:[%%A] コピー元ファルダが存在しません >> %logfile% 2>&1) else (
@ECHO. && @ECHO [%%A] を [%%B] へコピーしています・・・ & robocopy "%%A" "%%B" /COPY:DAT %%C /S /E /MIR /FP /TS /R:0 /NP /V /LOG+:%logfile%)
)
@ECHO. >> %logfile% 2>&1
)

@ECHO ■データコピーを終了します。■ >> %logfile%

:end
@ECHO %DATE% %TIME% ***** [%host%] データ移行処理終了 ***** >> %logfile%
@ECHO %DATE% %TIME% ***** [%host%] データ移行処理終了 *****

REM **************** カレントディレクトリを戻す ************************
cd %c_path%
@ECHO ON