需要批量复制昨天的文件(sysdate -1)

时间:2017-07-26 10:28:37

标签: batch-file cmd copy

我需要一个脚本来复制包含整个月份文件的位置的文件。 问题是我只需要将昨天的文件复制到临时位置。我搜索了很多,但找不到解决方案。

我试过这种形式。第一部分向我展示了从昨天起的那一天。

@echo off
Set _Source=V:\IngOnline
Set _Dest=D:\SPEtransfer\IngOnline\Temp
set log=D:\SPEtransfer\logIngOnlineTransfer.log
set day=-1
echo >"%temp%\%~n0.vbs" s=DateAdd("d",%day%,now) : d=weekday(s)
echo>>"%temp%\%~n0.vbs" WScript.Echo year(s)^& right(100+month(s),2)^& right(100+day(s),2)
for /f %%a in ('cscript /nologo "%temp%\%~n0.vbs"') do set "result=%%a"
del "%temp%\%~n0.vbs"
set "YYYY=%result:~0,4%"
set "MM=%result:~4,2%"
set "DD=%result:~6,2%"
set "data=%yyyy%-%mm%-%dd%"

echo Yesterday was "%data%"
pause

forfiles /p %_Source% /d -1 "cmd /c copy %_Source%\*.* %_Dest%"

1 个答案:

答案 0 :(得分:0)

这是简化的替换代码,应该复制到%_D% %_S%中仅在昨天修改过的任何文件:

@Echo Off

Set "_S=V:\IngOnline"
Set "_D=D:\SPEtransfer\IngOnline\Temp"

For /F UseBackQ %%A In (`PowerShell^
 "(Get-Date).AddDays(-1).ToString('dd/MM/yyyy')"`) Do ForFiles /P "%_S%" /D^
 %%A /C "Cmd /C If @IsDir==FALSE If @FDate==%%A Copy @Path 0x22%_D%0x22>Nul"

您只需确保ToString(' ')中的格式与ForFiles命令所需的格式相匹配(在命令提示符窗口中输入ForFiles /?即可找到它)