我怎样才能防止 XCOPY 复制超出其应该复制的内容?

我怎样才能防止 XCOPY 复制超出其应该复制的内容?

我有一个用于将文件从一个文件夹复制到另一个文件夹的脚本。XCOPY 命令如下所示:

 XCOPY /E /Y /V /D:%date% %reportsDataPath% TMP\

日期标记应该使其仅复制指定日期或更晚的文件,但在 TMP 中我看到它复制了之前创建的文件。但是,它不会复制文件中的所有数据。相反,它复制了根文件和子目录,但没有复制它们应包含的数据。

我的命令中是否存在错误,导致其复制这些文件?

答案1

%date%给出的命令格式不正确,帮助说交换机/D需要格式m-d-y,而echo %date%会给出Tue 11/26/2013。这意味着您需要重新格式化日期以符合要求。

我认为你可以用以下方法修复该问题:

@echo off

:GetDate
for /f "skip=1 tokens=1-3" %%a in ('WMIC Path Win32_LocalTime Get Day^,Month^,Year') ^
do (
    set mydate=%%b-%%a-%%c
    goto CopyScript
)

:CopyScript
 xcopy /e /y /v /d:%mydate% %reportsDataPath% TMP\

更新 #1

为了未来的访客,我相信此更新将为您提供正确的日期格式,无论区域如何。如果来自其他地区(美国以外,并且默认使用不同于 mm/dd/yyyy 的格式)的人可以验证,那就太棒了。

更新 #2

使用 powershell,您也可以获得此功能(cmd命令在 Powershell 中仍然有效,但整体功能得到了极大扩展)。

Get-Date -Format MM-dd-yyyy

相关内容