我有一个用于将文件从一个文件夹复制到另一个文件夹的脚本。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