繁体   English   中英

循环遍历文件时间戳,如果它等于今天的日期,则复制文件

[英]Loop through file timestamps, and if it equals to today's date, copy file

美好的一天

我在一个文件夹中有一堆SQL文件。 现在我想遍历每个文件并获取文件的时间戳。 如果时间戳与当前日期匹配,那么我想将该文件复制到新位置。

这是文件的目录结构:

c:\MFA\MFA_timestamp\MFA_timestamp.sql

和文件的例子是:

c:\MFA\MFA_20131008\MFA_20131008.sql

所以这是我到目前为止的代码,但它不对...

set currentDate=%date%

FOR /R c:\MFA\ %%G IN (*.sql) DO SET %%G=%file%

FOR %%f IN (%file%) DO SET filedatetime=%%~tf
IF %filedatetime:~0, 10% == %currentDate% goto same

goto notsame

:same
copy %file% c:\NEWLOCATION

goto next

:notsame

goto end

:next

我在这里做错了什么建议?

谢谢

如果我明白你需要做什么,这应该有用:

此代码的前四行将为您提供XP Pro及更高版本中可靠的YY DD MM YYYY HH Min Sec变量。

@echo off
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"

set "datestamp=%YYYY%%MM%%DD%"

for /r "c:\mfa" %%a in (MFA_%datestamp%.sql) do copy "%%a" "d:\target\folder"
@echo off
setlocal enableextensions enabledelayedexpansion

set "currentDate=%date:~0,10%"
    for %%g in ("c:\mfa\*.sql") do (
     set "fileDate=%%~tg"
     set "fileDate=!fileDate:~0,10!"
     if "!fileDate!"=="%currentDate%" (
        copy "%%~fg" "c:\newLocation"
     )
    )

对于指定文件夹中的每个.sql文件,如果文件日期(10个第一个字符,我假设某个mm / dd / yyyy变体中的日期)等于当前日期(相同的字符数),则复制文件到新目录

编辑 - 2008服务器安装似乎给delayedexpansion带来了问题。 根据相同的假设(来自OP原始问题中的数据),日期是以某个mm / dd / yyyy变化,并且因为在%date%中以相同格式返回(据我所知)提交时间中的文件%date%变量,这个“应该”工作(我希望,前面的代码也“应该”工作)没有delayedexpansion

@echo off
    setlocal enableextensions disabledelayedexpansion

    for /f %%d in ("%date%") do for %%a in ("c:\mfa\*.sql") do for /f %%b in ("%%~ta") do (
        if "%%b"=="%%d" copy "%%~fa" "c:\newLocation"
    )

    endlocal

它接受'%date%'返回的数据的第一个标记,并且对于指定集合中的每个文件,获取文件datetime字段中的第一个标记,并再次检查分割的当前日期。 如果两个值相等,则将文件复制到目标。

编辑2 - 嗯,似乎它在2008服务器中不起作用。 接下来试试。 也没有延迟扩张。 至于%date%变量以与文件datetime相同的格式返回信息(不确定它是否可以不同),并且在文件datetime中日期部分出现在时间部分之前,“maybe”这可以工作。

@echo off
    setlocal enableextensions disabledelayedexpansion

    set "source=d:\descargas\_work\x"
    set "target=c:\newLocation"

    for /f "tokens=2 delims=|" %%a in (
        'cmd /q /d /c "for %%f in ("%source%\*.*") do echo(%%~tf^|%%~ff"^|findstr /l /i /b /c:"%date%"'
    ) do (
        echo copy "%%a" "%target%"
    )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM