プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
Windows、フォルダをバックアップするバッチファイル
パソコンさんってのはいつ壊れるか分からないものです。
なもんで作業したファイル類はフォルダ単位で
外付けディスクにバックアップを取っているのですが、
そろそろ手動でやるのが面倒な数になってきました。

と言う訳でちゃちゃっとバッチファイル作って
自動化してみましたよっと。
対象フォルダをバックアップ先の外付けディスクに
コピーするバッチです(--)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



一行でも書けるコードをここまで膨らませて書くのが
プロのプロたるゆえんです(--)☆
あっ、石を投げないでっ。

まぁ一行で書けるなら一行で書くべきか、
あるいはいろいろ考えてあれやこれやしておくべきかは
個々人のセンスなんでしょうね。

私は楽をする為の努力は惜しまない派なのです(--)ノ
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:コマンド/バッチ  thema:パソコンな日々 - genre:コンピュータ  Posted by ササキマコト 

  関連記事