0

これが私がやりたいことです:単一のパーティション内のすべてのファイルをチェックして、今日改訂/作成されたファイルがあるかどうかを判断する「bat」ファイルを書きたいです。したがって、オフィスを出る前に毎日このバットを実行すると、使用したすべてのファイルを 1 つのフォルダーにバックアップできます。私が今持っているバットファイルは、ファイルではなくフォルダーをコピーし、まったく機能しないことがあります...デバッグを手伝ってもらえますか? C/D などのルート ディレクトリに配置し、d:/test を「対象のファイルをテスト コピーする」予定のフォルダーに変更することができます。

ここに私が今持っているコードがあります:

@echo off
set t=%date%
set t=%t:~0,10%
echo %t%
setlocal ENABLEDELAYEDEXPANSION
for /f "tokens=*" %%i in ('dir /b /a-d')  do (
set d=%%~ti
set d=!d:~0,10!
echo !d!
if "!d!"=="%t%" (if not "%~nx0"=="%%i" copy "%%i"  d:\test))
for /f "tokens=*" %%j in ('dir /b /ad') do (
set d=%%~tj
set d=!d:~0,10!
echo !d!
if "!d!"=="%t%"  (echo d|xcopy /e /y "%%j" d:\test\%%j))
4

1 に答える 1

0

使えますrobocopyか?この行は、c:\source 内のすべてのファイルと、前日に変更されたそのサブフォルダーを d:\test にコピーします。

robocopy c:\source d:\test *.* /s /maxage:1 

もちろん、ある日実行するのを忘れると、その日に触れたファイルが失われます。したがって、これが本当にバックアップ用である場合は、アーカイブ ビットを使用することをお勧めします。

robocopy c:\source d:\test *.* /s /m

ファイルが作成または編集されると、Windows はアーカイブ ビットをクリアします。 robocopyこの/mスイッチを使用すると、アーカイブ ビットが設定されたファイル (つまり、スクリプトを最後に実行してから変更されたファイルのみ) のみがコピーされ、アーカイブ ビットが設定されます。

于 2013-06-10T01:47:52.110 に答える