首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >批处理:仅在指定日期复制更改的文件

批处理:仅在指定日期复制更改的文件
EN

Stack Overflow用户
提问于 2015-06-10 09:26:11
回答 2查看 2.9K关注 0票数 3

使用批处理脚本,我希望使用特定日期将文件复制到文件夹中。我不想在指定日期之后复制文件,我只想要修改日期正好是指定日期的文件。

我使用了XCOPY,但/D参数在指定日期前后复制文件。例子:

代码语言:javascript
复制
XCOPY "D:\FOLDER" "V:\FOLDERBIS" /K /R /Y /I /D:05-25-2015 /E

这将复制修改日期大于或等于2015年5月25日的文件,我只想要修改日期等于这个特定日期的文件。

而且我不能用ROBOCOPY。你有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-10 10:18:27

如果您不能使用forfiles (Win XP及以上),也许可以使用robocopy (Win 7或更高):

代码语言:javascript
复制
forfiles /D "2.06.2015" /c "cmd /c if @fdate EQU "02.06.2015" echo @file @fdate"

使用此命令的原因是它已经解析了日期。

票数 3
EN

Stack Overflow用户

发布于 2015-06-10 10:29:50

代码语言:javascript
复制
@echo off

set "_date=20150525"
set "directory=D:\FOLDER"

for %%# in (%directory%) do (
    set "_path=%%~pn#"
    set "_drive=%%~d#"
)


set "_path=%_path:\=\\%\\"

setlocal enableDelayedExpansion

for /f "tokens=* delims=" %%# in ('wmic datafile where "path='%_path%' and drive='%_drive%' " get LastModified^,Caption /Format:value') do (
    for /f "tokens=1,2 delims==" %%A in ("%%#") do (
        if "%%A" equ "Caption" (
            set _fpath=%%B
        )

        if "%%A" equ "LastModified" (
            set _time=%%B
            if  !time:~0,8! equ %_date% (
                echo file !_fpath! has been created on !_time!
                rem :: remove echo if everything is ok
                echo copy "!_fpath!" "V:\FOLDERBIS"
            )
        )
    )

)

编辑:使用wmic过滤的文件日期

代码语言:javascript
复制
@echo off

set "_date=20150525"
set "directory=D:\FOLDER"


:: time zone is not used to deal better with - and + signs
for /f %%$ in ('wmic os get LastBootUpTime /format:value') do (
    for /f %%# in ("%%$") do set "%%#"
)
set offset=%LastBootUpTime:~21,4%

set "edate=%_date%235959.999999%offset%"
set "bdate=%_date%000000.000000%offset%"

for %%# in (%directory%) do (
    set "_path=%%~pn#"
    set "_drive=%%~d#"
)


set "_path=%_path:\=\\%\\"

for /f "skip=1 tokens=* delims=" %%# in (' wmic datafile where "path='%_path%' and drive='%_drive%'  and LastModified<='%edate%' and LastModified>='%bdate%'" get Caption /Format:table') do (
    for /f "tokens=* delims=" %%A in ("%%#") do (
        echo %%A
        copy "%%A" "V:\FOLDERBIS"
    )

)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30752342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档