批处理当文件名时间或者创建时间与系统时间一致,则裁剪到另一个文件

我想用BAT做一个表格任务发放,到了时间就把表格发送到指定文件下。

描述:在D:\test下有很多xlsx文件,每个文件名为年-月-日-时-分-秒.xlsx。
需要:当D:\test下面文件名为hh-mm-ss的文件与系统当前时间一致时,将文件裁剪到D:\test1下面。
文件名都是以时间命名的。

举例:
D:\test下面有
2022-02-22-08-08-08.xlsx (文件一)
2022-02-22-09-10-12.xlsx (文件二)

需求:
当系统当前时间到了08:08:08的时候,将D:\test\2022-02-22-08-08-08.xlsx的文件裁剪到D:\test1下面;
当系统当前时间到了09:10:12的时候,将D:\test\2022-02-22-09-10-12.xlsx的文件裁剪到D:\test1下面
以此类推……直到当天任务分配完成为止。

vbs可以用下面的

img

function gethms()'获取当前时间
  v=hour(now())
  s=""
  if v<10 then 
    s=s&"0"&v
  else
    s=s&"-"&v
  end if
  v=minute(now())
  if v<10 then 
    s=s&"-0"&v
  else
    s=s&"-"&v
  end if
  v=second(now())
  if v<10 then 
    s=s&"-0"&v
  else
    s=s&"-"&v
  end if
  gethms=s
end function

sourcepath="d:\test\"'xlsx文件所在目录
targetpath="d:\test1\"'要裁剪到的目标目录

set fso=createobject("scripting.filesystemobject")
set dict=createobject("scripting.dictionary")
''''''''''''读取目标文件夹下的xlsx文件放入字典中
set folder=fso.getfolder(sourcepath)
set files=folder.files
for each file in files
  dict.Add file.path,1
next
set files=nothing
set folder=nothing


while dict.Count>0'字典有文件
  '获取当前时间
  s=gethms()&"."
  for each item in dict
     if instr(item,s)<>0 then'文件包含当前时间,执行移动
        filename=replace(lcase(item),sourcepath,"")
        fso.MoveFile item,targetpath&filename
        dict.Remove(item)'从字典中删除此项
        exit for
     end if
  next

  Wscript.sleep(1000)'500ms执行一次

wend

set fso=nothing
set dict=nothing

msgbox "excel文件全部移动完毕"



img

用vbs

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632