批处理问题,如何将文件修改日期是当天的某几个文件拷贝到另外一个目录。

2025-03-11 14:59:52
推荐回答(4个)
回答1:

批处理的话用dir /o就可以列出最新文件了
注意代码只能用键盘Ctrl+C复制,用鼠标右键复制代码空格和回车会被百度吞掉
如果要理清最新文件的原理,以下vbs代码思路会更清晰.可以更自由的比较

以下是bat代码,保存为bat类型文件,bat代码比较简单,但不能按天比较,只能按文件完整时间比较

@echo off
set "originalpath_target=%cd%"              %源路径%
set "Copypath_target=D:\备份"                %目标路径%
set "Filename=%originalpath_target%\*.txt"  %路径+文件%
echo %filename%
if not exist %Copypath_target% md %Copypath_target%
for /f "delims=" %%1 in ('dir /b /o-d "%Filename%"')do copy %%1 %Copypath_target%&exit
pause 
以下是vbs代码,保存为vbs类型文件
set fso=createobject("scripting.filesystemobject")
dim count,filetime(),filename(),timecompare(1),con,Copypath_target,originalpath_target,FormatPath
originalpath_target="D:\a\111"                '源路径
Copypath_target="D:\备份"               '目标目录
if right(copypath_target,1)<>"\" then copypath_target=copypath_target&"\"   '用于格式化路径
for each filelist in fso.getfolder(originalpath_target).files
 if fso.getextensionname(filelist.name)="txt" then        '如果文件后缀名是txt则执行下面的代码
  redim preserve filetime(count)
  redim preserve filename(count)
  filetime(count)=datevalue(filelist.dateLastmodified)      '获取文件修改时间,并存入数组
  filename(count)=filelist.path            '获取文件名,并存入数组
  count=count+1                '为数组计数
 end if
next
if fso.folderexists(copypath_target)=false then fso.createfolder copypath_target '如果路径不存在则新建一个文件夹
Compare filetime,con                '比较文件时间
fso.copyfile filename(con),copypath_target           '复制文件
Public Function Compare(byref Arr,byref CountArr)         '比较大小
 Dim ListCount
 Compare = Arr(LBound(Arr))              '随便拿一个数组中的时间进行依次比较
 For ListCount = UBound(Arr) To LBound(Arr) Step -1 
  If Arr(ListCount) >= Compare Then
   CountArr = ListCount             '记录数组元素
   Compare = Arr(ListCount)            '为数组元素赋值并获取最新时间
  End If
 Next
End Function
set fso=nothing

回答2:

@echo off

::设置源文件目录
set "SrcDir=D:\源目录"
::设置文件拷贝后文件夹
set "DstDir=D:\目的目录"
::文件最后修改日期与当前时间的比较,N天之前设置为 -N
set "days=-0"

if not exist "%SrcDir%" echo;%SrcDir%不存在&pause&exit
if not exist "%DstDir%" md "%DstDir%"
forfiles /d %days% /p "%SrcDir%" /m *.dbf /s /c "cmd /c copy @path %DstDir%"
pause

回答3:

@echo off
set td=%date:~,10%
for /f "tokens=*" %%i in ('dir/b *.dbf') do if %%~ti gtr %td% copy "%%i" d:\back

回答4:

百度一下吧