我想用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可以用下面的
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文件全部移动完毕"
用vbs
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!