4

C:\Dropbox から C:\backup に変更/修正済みファイルと新しいファイルのみをコピーするスクリプトが必要です。なぜこれはフォルダ構造のみをコピーするのですか:

@echo off

set destination=C:\Backup
set source=C:\Users\XXXX\Dropbox\Intranet

for /F "tokens=2-4 delims=/ " %%i in ('date /t') do set yyyymmdd1=%%j"."%%i"."%%k

xcopy %source%"\*" %destination%"\*" /m/e/y
mkdir %destination%"\LastBackupDate %yyyymmdd1%"
echo A folder containing the latest date has been created in root directory of %source%.
echo Finished copying %source% to %destination%
echo.
pause
4

4 に答える 4

0

元の質問に答えるには、スクリプトがフォルダー構造だけをコピーした理由...

xcopy のパラメータが原因で、次の /m/e/y だけを指定しました。

/M = アーカイブ属性が設定されたファイルのみをコピーし、アーカイブ属性をオフにします。

/E = 空のディレクトリとサブディレクトリをコピーします。

/Y = 確認を抑制します。

前の回答のように、/D を追加して /M を削除するだけでうまくいくことに注意してください。/D に関するヘルプの内容を確認してください。

/D:mdy 指定した日付以降に変更されたファイルをコピーします。日付が指定されていない場合、コピー元の時間がコピー先の時間よりも新しいファイルのみがコピーされます。

1回の実行で複数のフォルダーをバックアップし、それらの実行を含むログファイルが必要な場合は、次のようにすることができます:

@echo off

call:backUpFolder "C:\Users\XXX\folder1" "C:\Backup\folder1"
call:backUpFolder "C:\Users\XXX\folder2" "C:\Backup\folder2"
call:backUpFolder "C:\Users\XXX\folder3" "C:\Backup\folder3"

goto:eof
::--------------------------------------------------
::-- This is the function to back up one folder
::--------------------------------------------------
:backUpFolder
set source="%~1"
set destination="%~2"
echo copying from %source% to %destination%

for /F "usebackq tokens=1,2 delims==" %%i in (`wmic os get LocalDateTime /VALUE 2^>NUL`) do if '.%%i.'=='.LocalDateTime.' set ldt=%%j
set ldt=%ldt:~0,4%-%ldt:~4,2%-%ldt:~6,2% %ldt:~8,2%:%ldt:~10,2%:%ldt:~12,6%

xcopy %source%"\*" %destination%"\*" /s/d/y/c/v/r

echo %ldt%: %source% to %destination% >> backHistory.log
echo Finished copying %source% to %destination%
goto:eof
于 2016-12-23T00:08:42.027 に答える