我在本地 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