使用今天日期作为文件名复制txt文件(YYMMDD)

时间:2015-09-21 03:00:04

标签: windows batch-file cmd

每天我都会创建一个包含今天日期的数据日志(例如ERR150921.txt)。我需要像备份一样将此文件复制到服务器。

这是我目前的代码:

SET ServerPath=\\IYA-PC\Shared
SET ClientPath=%USERPROFILE%\Documents\Data Log

echo.
echo Copying Files to Server...
FOR /F "delims=|" %%I IN ('DIR "%ClientPath%\*.txt" /B /O:F') DO SET NewestFile=%%I
xcopy "%ClientPath%" "%ServerPath%\%NewestFile%" /s /c /d /e /h /i /r /y

我从这里的帖子中得到了它。它复制最近更新的文件。 问题是我不需要所有更新的文件。我只需要复制今天创建的文件。

2 个答案:

答案 0 :(得分:0)

获取今天的日期,并将其转换为您的文件名

print $string;

答案 1 :(得分:0)

此示例将复制每个日期为扩展前的名称的文件。即它会复制任何一个;

"ERR150921.txt"
"21184150921.txt"
"2526150921.txt"
"29056-150921.txt
"150921.txt"
"ABCDEF-150921.txt"

@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 "_timestamp=%YY%%MM%%DD%"

SET "ServerPath=\\IYA-PC\Shared"
SET "ClientPath=%USERPROFILE%\Documents\Data Log"

echo.
echo Copying Files to Server...
setlocal enabledelayedexpansion
FOR /F "delims=|" %%I IN ('DIR "%ClientPath%\*.txt" /B') DO (
    set "filename=%%~nI"
    if "!filename:~-6!"=="%_timestamp%" (
        echo xcopy "%%~I" "%ServerPath%\%%~nxI" /s /c /d /e /h /i /r /y
    )
)