bat文件调试“备份用过的文件”

时间:2013-06-09 19:35:14

标签: batch-file copy backup

这是我想要做的:我想编写一个“bat”文件,它将检查单个分区中的所有文件,以确定是否有任何文件今天被修改/创建,如果有的话,我会将这些文件复制到一个文件夹。所以,如果我在离开办公室之前每天都运行这个蝙蝠,我可以备份我在一个文件夹中使用的所有文件。我现在的bat文件复制文件夹而不是文件,有时根本不起作用...你能帮我调试一下吗?您可能希望将其放在根目录(如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))

1 个答案:

答案 0 :(得分:0)

你能使用robocopy吗?此行将c:\ source及其在最后一天修改过的子文件夹中的所有文件复制到d:\ test。

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

当然,如果你有一天忘记运行它,那么你会错过当天触及的任何文件。因此,如果这是真正的备份,更好的方法是使用存档位。

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

创建或编辑文件时,Windows将清除存档位。带robocopy开关的/m只会复制存档位设置的文件(仅表示自上次运行脚本以来已更改的文件),然后设置存档位。

相关问题