0

这是我想要做的:我想编写一个“bat”文件,它将检查单个分区中的所有文件,以确定今天是否有任何文件被修改/创建,如果有的话,我会将这些文件复制到一个文件夹中。因此,如果我每天在离开办公室之前运行这个 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))
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 回答