1
0

バッチマンの定例作業簡略化ヒント 〜定例バックアップ編

Posted at

バッチマンの定例作業簡略化ヒント 〜定例バックアップ編

こんにちは、私は定例作業に平和をもたらすバッチマンだ。
今日は定例的なファイルのバックアップミッションを遂行するぞ!
このバッチファイルを使えば、君の作業時間短縮に役立つだろう。さあ、共に戦おう!

ミッション

「C:\data_folder にある重要なファイルを毎日バックアップせよ。」

紹介するバッチファイルの特徴

  1. C:\data_folder 内のファイル及びディレクトリが C:\daily_backup 内に保存される。(サブディレクトリ含む)
  2. 7日より古いバックアップは、自動的にバッチマンが始末してくれる。

Step 1

まずは、メモ帳を開き、以下のコードを入力してくれ。

@echo off
setlocal
REM ディレクトリの設定
set SOURCE_DIR=C:\data_folder
set BACKUP_DIR=C:\daily_backup
REM バックアップ用のタイムスタンプを取得
for /f "tokens=2 delims==" %%i in ('wmic os get localdatetime /value') do set datetime=%%i
set datetime=%datetime:~0,8%_%datetime:~8,6%
REM バックアップ先ディレクトリを作成
set BACKUP_SUBDIR=%BACKUP_DIR%\backup_%datetime%
mkdir "%BACKUP_SUBDIR%"
REM ソースディレクトリをバックアップディレクトリにコピー
xcopy "%SOURCE_DIR%\*" "%BACKUP_SUBDIR%\" /e /y
REM 7日より古いバックアップを削除
forfiles /p "%BACKUP_DIR%" /m * /d -7 /c "cmd /c if @isdir==TRUE rd /s /q @path"
echo バックアップ完了!古いバックアップも始末したぞ!
pause

解説

さあ、バッチマンの解説タイムだ!

  • setlocal: バッチファイル内で設定した変数が他に影響を与えないようにするためのものだ。
  • set SOURCE_DIRset BACKUP_DIR: 君の守るべきデータフォルダとバックアップフォルダのパスを設定する。
  • wmic os get localdatetime /value: 現在の日付と時間を取得するぞ!
  • mkdir "%BACKUP_SUBDIR%": バックアップ用のサブフォルダを作成するぞ!
  • xcopy xxx /e /y: フォルダをコピーするためには「copy」ではなく「xcopy」を使用するぞ!後半の「/e /y」はそれぞれ、ディレクトリまたはサブディレクトリが空であってもコピーする、受け側の既存のファイルを上書きする前に、確認メッセージを表示しないという意味だぞ!

Step 2

このファイルを daily_backup.bat として保存してくれ。

Step 3

タスクスケジューラに登録して、毎日決まった時間に実行するように設定しよう。

  • forfiles: forfilesコマンドは、条件に合致するファイルに対して処理を行うコマンドだぞ!ここでは「/d -7」で7日前の日付を基準にして、それより古いファイルやフォルダを選択しているぞ!
    このバッチファイルを使えば、君の面倒な作業からおさらば。
    毎日のバックアップが自動化され、古いバックアップも整理されるから、心配無用さ。
    定例作業のダークナイトとなって、ゴッサム・シティに希望の光をともそう!
    <参考>
    バッチファイルの基礎
    Windowsコマンドリファレンス

採用拡大中!

アシストエンジニアリングでは一緒に働くフロントエンド、バックエンドのエンジニア仲間を大募集しています!
少しでも興味ある方は、カジュアル面談からでもぜひお気軽にお話ししましょう!
お問い合わせはこちらから↓
https://www.assisteng.co.jp/contact/

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0