编写批处理脚本以根据日期复制文件

编写批处理脚本以根据日期复制文件

我在本地 PC 上有一个文件夹,可通过 Dropbox 更新文件。我创建了一个批处理脚本,该脚本每天通过调度程序运行。

到目前为止,它C:\TheGlenFTP\sendho在运行某些 xcopy 命令之前会检查文件夹是否为空 ()。我想给这个脚本添加一个条件 - 即只有当文件的 C:\Users\user\Dropbox\Combined\orderhea.dat时间戳为今天的日期时,它才会运行 xcopy 命令。

你们有人可以帮忙吗?

这是迄今为止的批处理脚本。

@Echo off
Setlocal
Set _folder="C:\TheGlenFTP\sendho"
For /F %%A in ('dir /b /a %_folder%') Do (
    Echo The folder is NOT empty
    goto :ok
)
xcopy C:\TheGlenFTP\combined\*.* c:\Holdsworth\Data\ /y /c
xcopy C:\Holdsworth\Programs\xmit.ok C:\Holdsworth\Data\
:ok

答案1

@echo off && setlocal enabledelayedexpansion

set "_dt_file=//null..."
set "_file=C:\Users\user\Dropbox\Combined\orderhea.datafile"

>nul 2>&1 dir /a:a /b "C:\TheGlenFTP\sendho\." && =;(
    
     echo\The folder is NOT empty^!!... & exit /b 

    );= || =;(

     for /f usebackq^tokens^=4delims^=^<^>. %%G in =;(`
         2^>nul wmic datafile where name^="%_file:\=\\%" get lastmodified /format:xml ^| find "VALUE&"
           `);= do call set "_dt_file=%%~G"
             
     for /f usebackq^tokens^=4delims^=^<^>. %%i in =;(`
        2^>nul wmic os get LocalDateTime /format:xml ^| find "VALUE&" 
           `);= do call set "_today=%%~i"
     
     if "!_today:~0,8!" == "!_dt_file:~0,8!" =;(
         
         xcopy "C:\TheGlenFTP\combined\*.*" "c:\Holdsworth\Data\" /y /c
         xcopy "C:\Holdsworth\Programs\xmit.ok" 'C:\Holdsworth\Data\"
        
        );= else echo/Today !_today:~0,8! differs file date !_dt_file:~0,8!
        
    );= 

endlocal

相关内容