西田利の日記

写真サーバーSSL化成功

XCOPY

 最近新しいBATファイルを作らないのでXCOPYのオプションがそらで出てこなくなった。出張用のHDDを作るために整理しておく。コンソールパネルでxcopy /?と打ってヘルプを見ると、バックアップのバッチファイルに必要なオプションは、


/D:月-日-年 指定された日付以降に変更されたファイルをコピーします。日付が指定されなかったときは、コピー元の日付がコピー先の日付より新しいファイルだけをコピーします。


/E ディレクトリまたはサブディレクトリが空であってもコピーします。"/S /E" と同じ意味です。/T の内容を変更する際にも使用できます。


/Y 既存のファイルを上書きする前に確認のメッセージを表示しません。


 つまりフォルダーバックアップ用バッチファイルは、


xcopy "コピー元" "コピー先" /d /e /y


 またPC全体のバックアップのバッチファイルではさらに、


/EXCLUDE:ファイル1[+ファイル2][+ファイル3]...
コピーの除外対象を特定するための文字列を記述したファイルを指定します (複数指定可)。文字列は、1 行に 1 つずつ記述します。その文字列が、コピー対象ファイルの絶対パスの一部と一致した場合、そのファイルはコピーから除外されます。たとえば、"\obj\" という文字列を指定するとディレクトリ obj の下の全ファイルが除外 されます。".obj" という文字列を指定すると .obj という拡張子のファイルがすべて除外されます。


/C エラーが発生してもコピーを続けます。


/H 隠しファイルやシステム ファイルもコピーします。


/R 読み取り専用ファイルを上書きします。


 が必要になる。記憶の中でもD,E,Y,Cくらいだった気がする。


 ついでにバッチファイルで外付HDDやUSBメモリーのドライブ名を探す方法は、対象のドライブに特有のフォルダ名か、それが無ければ目印になるファイル(USB.TXT)を保存しておいて、if exist でそれを探す。下はCANONのデジカメのメモリーカードを読んで日付毎のフォルダに保存するバッチファイル。

                                                                                                                • -

setlocal enabledelayedexpansion

echo off

rem *******************************************
rem *** verDrive : メモリーカードのドライブ ***
rem *******************************************

set verDrive=Z

if exist E:\DCIM\???_0??? (
set verDrive=E
)

if exist E:\DCIM\???_1??? (
set verDrive=E
)

if exist F:\DCIM\???_0??? (
set verDrive=F
)

if exist F:\DCIM\???_1??? (
set verDrive=F
)

if exist G:\DCIM\???_0??? (
set verDrive=G
)

if exist G:\DCIM\???_1??? (
set verDrive=G
)

if exist H:\DCIM\???_0??? (
set verDrive=H
)

if exist H:\DCIM\???_1??? (
set verDrive=H
)

if exist I:\DCIM\???_0??? (
set verDrive=I
)

if exist I:\DCIM\???_1??? (
set verDrive=I
)

if "!verDrive!"=="Z" goto end

rem ************
rem *** LOOP ***
rem ************

rem *** ディレクトリのリスト ***

dir "!verDrive!:\DCIM" > dlist.txt

FOR /F "delims=" %%d IN (dlist.txt) DO (
set verDir=%%d

if "!verDir:~21,5!"=="

" if "!verDir:~39,1!"=="_" if Not "!verDir:~-1!"=="." ( set verDate=!verDir:~0,4!_!verDir:~5,2!_!verDir:~8,2! @ECHO verDate=!verDate! @ECHO verDir:~21,5=!verDir:~21,5! @ECHO verDir:~36=!verDir:~36! @ECHO C:\Users\利嗣\Pictures\camera\!verDate! if not exist "C:\Users\利嗣\Pictures\camera\!verDate!" ( md "C:\Users\利嗣\Pictures\camera\!verDate!" ) xcopy /d "!verDrive!:\DCIM\!verDir:~36!" "C:\Users\利嗣\Pictures\camera\!verDate!" ) ) :end pause

                                                                                                                • -