2012.
04.
26
18:55:01
パソコンさんってのはいつ壊れるか分からないものです。
なもんで作業したファイル類はフォルダ単位で
外付けディスクにバックアップを取っているのですが、
そろそろ手動でやるのが面倒な数になってきました。
と言う訳でちゃちゃっとバッチファイル作って
自動化してみましたよっと。
対象フォルダをバックアップ先の外付けディスクに
コピーするバッチです(--)b
ん(--?
単純にフォルダをコピーするだけだったら
XCOPYで一行じゃん、ですか?(^^;
いや、まぁ身も蓋もない言い方をすれば
その通りなんですけどね。(--;
これでも一応お仕事でやっている身です。
カッコつけて
1.コピー先の同名フォルダを一時退避
2.コピー元のフォルダをコピー先にコピー
3.「1.」で一時退避したフォルダを削除
と段階を踏むことにしたのです。
ほら、コピー途中でエラーになった場合
最悪前のが残っていないとイヤじゃないですか(--)b
と言う訳でカッコつけて書いたのがこんなんφ(--)
@ECHO OFF
@REM *********************************************************
@REM * バックアップ対象フォルダをE:にバックアップ
@REM *
@REM *********************************************************
ECHO %time%
SET FROM_DIR=C:\
SET TO_DIR=E:\
SET TARGET_NAME=バックアップ対象フォルダ
SET TMP_NAME=バックアップ対象フォルダ_bak
SET MSG=バックアップ対象フォルダをE:にバックアップ
SET /P pushKey=%MSG%"しますか(y/n)? : %pushKey%"
IF "%pushKey%" == "y" (
@REM OK
) ELSE IF "%pushKey%"=="Y" (
@REM OK
) ELSE (
GOTO END
)
@REM 移動先フォルダリネーム
IF EXIST %TO_DIR%%TARGET_NAME% (
RENAME %TO_DIR%%TARGET_NAME% %TMP_NAME%
)
@REM コピー
echo D | XCOPY /H /K /S /E %FROM_DIR%%TARGET_NAME% %TO_DIR%%TARGET_NAME%
@REM 旧フォルダ削除
IF EXIST %TO_DIR%%TMP_NAME% (
RMDIR /Q /S %TO_DIR%%TMP_NAME%
)
GOTO OK
:ERR
SET ERR_CD=%ERRORLEVEL%
ECHO ** %TARGET_NAME%バックアップ 異常終了! ERRORLEVEL= %ERR_CD%
GOTO END
:OK
ECHO ** %TARGET_NAME%バックアップ 正常終了!
GOTO END
:END
ECHO %time%
PAUSE
@REM EXIT
一行でも書けるコードをここまで膨らませて書くのが
プロのプロたるゆえんです(--)☆
あっ、石を投げないでっ。
まぁ一行で書けるなら一行で書くべきか、
あるいはいろいろ考えてあれやこれやしておくべきかは
個々人のセンスなんでしょうね。
私は楽をする為の努力は惜しまない派なのです(--)ノ
なもんで作業したファイル類はフォルダ単位で
外付けディスクにバックアップを取っているのですが、
そろそろ手動でやるのが面倒な数になってきました。
と言う訳でちゃちゃっとバッチファイル作って
自動化してみましたよっと。
対象フォルダをバックアップ先の外付けディスクに
コピーするバッチです(--)b
ん(--?
単純にフォルダをコピーするだけだったら
XCOPYで一行じゃん、ですか?(^^;
いや、まぁ身も蓋もない言い方をすれば
その通りなんですけどね。(--;
これでも一応お仕事でやっている身です。
カッコつけて
1.コピー先の同名フォルダを一時退避
2.コピー元のフォルダをコピー先にコピー
3.「1.」で一時退避したフォルダを削除
と段階を踏むことにしたのです。
ほら、コピー途中でエラーになった場合
最悪前のが残っていないとイヤじゃないですか(--)b
と言う訳でカッコつけて書いたのがこんなんφ(--)
@ECHO OFF
@REM *********************************************************
@REM * バックアップ対象フォルダをE:にバックアップ
@REM *
@REM *********************************************************
ECHO %time%
SET FROM_DIR=C:\
SET TO_DIR=E:\
SET TARGET_NAME=バックアップ対象フォルダ
SET TMP_NAME=バックアップ対象フォルダ_bak
SET MSG=バックアップ対象フォルダをE:にバックアップ
SET /P pushKey=%MSG%"しますか(y/n)? : %pushKey%"
IF "%pushKey%" == "y" (
@REM OK
) ELSE IF "%pushKey%"=="Y" (
@REM OK
) ELSE (
GOTO END
)
@REM 移動先フォルダリネーム
IF EXIST %TO_DIR%%TARGET_NAME% (
RENAME %TO_DIR%%TARGET_NAME% %TMP_NAME%
)
@REM コピー
echo D | XCOPY /H /K /S /E %FROM_DIR%%TARGET_NAME% %TO_DIR%%TARGET_NAME%
@REM 旧フォルダ削除
IF EXIST %TO_DIR%%TMP_NAME% (
RMDIR /Q /S %TO_DIR%%TMP_NAME%
)
GOTO OK
:ERR
SET ERR_CD=%ERRORLEVEL%
ECHO ** %TARGET_NAME%バックアップ 異常終了! ERRORLEVEL= %ERR_CD%
GOTO END
:OK
ECHO ** %TARGET_NAME%バックアップ 正常終了!
GOTO END
:END
ECHO %time%
PAUSE
@REM EXIT
一行でも書けるコードをここまで膨らませて書くのが
プロのプロたるゆえんです(--)☆
あっ、石を投げないでっ。
まぁ一行で書けるなら一行で書くべきか、
あるいはいろいろ考えてあれやこれやしておくべきかは
個々人のセンスなんでしょうね。
私は楽をする為の努力は惜しまない派なのです(--)ノ