使用VBS自动拷贝目录中的最新文件到指定目录
检查D:\abc目录,按时间排序,将该目录下距离当前系统时间最近的4个.JPG文件,自动拷贝至D:\123目录。...
检查D:\abc目录,按时间排序,将该目录下距离当前系统时间最近的4个.JPG文件,自动拷贝至D:\123目录。
展开
2个回答
展开全部
此次解答不为分,仅为解疑而已
请不要选为采纳,仍支持楼上
对追问解答:
法1:'***改为**
objFSO.copyFile "D:\abc"&eval("n"&j),"D:\123\"
法2:
直接将此vbs文件放入"D:\abc"文件夹中即可
此vbs 未找到有关时间的代码,修改时间,创建时间,访问时间,不知要问的是哪个时间
Set fso= CreateObject("Scripting.FileSystemObject")
Set file = fso.GetFile("E:\Documents and Settings\Administrator\桌面\新建文件夹\1.txt")
'File 对象的 DateCreated 属性返回该文件夹的创建日期和时间
'File 对象的 DateLastModified 属性返回最后一次修改该文件的日期和时间
'File 对象的 DateLastAccessed 属性返回最后一次访问该文件的日期和时间
MsgBox "创建时间:" & f.DateCreated & vbCrLf & "修改时间:" & f.DateLastModified & vbCrLf & "访问时间:" & f.DateLastAccessed, vbInformation, f.Name & "属性"
dim wsh,objFSO
strFolder = "D:\abc" '将D:\vbs改成你要改的文件所在位置
set wsh=createobject("wscript.shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(strFolder)
Set colFiles = objFolder.Files
i=1
For Each strFile in colFiles
If Lcase(objFSO.GetExtensionName(strFile)) = "jpg" Then
Execute "n"&i&"=strFile.name"
i=i+1
End If
Next
For j=i-1 To i-4 Step -1
'*****
'**此处加个msgbox eval("n"&j)
'*****显示的只有文件名,当你没有把此vbs放入 "D:\abc"文件夹下时会出现未找到文件错误,因为
'objFSO.copyFile eval("n"&j),"D:\123\"为 objFSO.copyFile 随机.jpg,"D:\123\"
'而 随机.jpg 在"D:\abc"文件夹下,(当你没有把此vbs放入 "D:\abc"文件夹下时)。
'***********************************
'objFSO.copyFile eval("n"&j),"D:\123\"
'**************************************
'***改为**
objFSO.copyFile "D:\abc"&eval("n"&j),"D:\123\"
'或者直接将此vbs文件放入"D:\abc"文件夹中即可
next
Set objFSO = Nothing
请不要选为采纳,仍支持楼上
对追问解答:
法1:'***改为**
objFSO.copyFile "D:\abc"&eval("n"&j),"D:\123\"
法2:
直接将此vbs文件放入"D:\abc"文件夹中即可
此vbs 未找到有关时间的代码,修改时间,创建时间,访问时间,不知要问的是哪个时间
Set fso= CreateObject("Scripting.FileSystemObject")
Set file = fso.GetFile("E:\Documents and Settings\Administrator\桌面\新建文件夹\1.txt")
'File 对象的 DateCreated 属性返回该文件夹的创建日期和时间
'File 对象的 DateLastModified 属性返回最后一次修改该文件的日期和时间
'File 对象的 DateLastAccessed 属性返回最后一次访问该文件的日期和时间
MsgBox "创建时间:" & f.DateCreated & vbCrLf & "修改时间:" & f.DateLastModified & vbCrLf & "访问时间:" & f.DateLastAccessed, vbInformation, f.Name & "属性"
dim wsh,objFSO
strFolder = "D:\abc" '将D:\vbs改成你要改的文件所在位置
set wsh=createobject("wscript.shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(strFolder)
Set colFiles = objFolder.Files
i=1
For Each strFile in colFiles
If Lcase(objFSO.GetExtensionName(strFile)) = "jpg" Then
Execute "n"&i&"=strFile.name"
i=i+1
End If
Next
For j=i-1 To i-4 Step -1
'*****
'**此处加个msgbox eval("n"&j)
'*****显示的只有文件名,当你没有把此vbs放入 "D:\abc"文件夹下时会出现未找到文件错误,因为
'objFSO.copyFile eval("n"&j),"D:\123\"为 objFSO.copyFile 随机.jpg,"D:\123\"
'而 随机.jpg 在"D:\abc"文件夹下,(当你没有把此vbs放入 "D:\abc"文件夹下时)。
'***********************************
'objFSO.copyFile eval("n"&j),"D:\123\"
'**************************************
'***改为**
objFSO.copyFile "D:\abc"&eval("n"&j),"D:\123\"
'或者直接将此vbs文件放入"D:\abc"文件夹中即可
next
Set objFSO = Nothing
展开全部
dim wsh,objFSO
strFolder = "D:\abc" '将D:\vbs改成你要改的文件所在位置
set wsh=createobject("wscript.shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(strFolder)
Set colFiles = objFolder.Files
i=1
For Each strFile in colFiles
If Lcase(objFSO.GetExtensionName(strFile)) = "jpg" Then
Execute "n"&i&"=strFile.name"
i=i+1
End If
Next
For j=i-1 To i-4 Step -1
objFSO.copyFile eval("n"&j),"D:\123\"
next
Set objFSO = Nothing
——————————
因为此程序获取文件夹的名称本来就是按照时间大小来排列的,所以只要将最后四个复制就可以了
strFolder = "D:\abc" '将D:\vbs改成你要改的文件所在位置
set wsh=createobject("wscript.shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(strFolder)
Set colFiles = objFolder.Files
i=1
For Each strFile in colFiles
If Lcase(objFSO.GetExtensionName(strFile)) = "jpg" Then
Execute "n"&i&"=strFile.name"
i=i+1
End If
Next
For j=i-1 To i-4 Step -1
objFSO.copyFile eval("n"&j),"D:\123\"
next
Set objFSO = Nothing
——————————
因为此程序获取文件夹的名称本来就是按照时间大小来排列的,所以只要将最后四个复制就可以了
追问
又是兄台,多谢了。vbs执行后无效,传上图片。
追答
dim wsh,objFSO
strFolder = "D:\vbs\" '将D:\vbs改成你要改的文件所在位置
set wsh=createobject("wscript.shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(strFolder)
Set colFiles = objFolder.Files
i=1
For Each strFile in colFiles
If Lcase(objFSO.GetExtensionName(strFile)) = "jpg" Then
Execute "n"&i&"=strFile.name"
Execute "z"&i&"=strFile.DateCreated"
i=i+1
End If
Next
If i-1<4 Then
For j=1 To i-1
objFSO.copyFile strFolder&eval("n"&j),"D:\vbs\bat\"
Next
Else
If eval("z"&i-1) = eval("z"&i-4) Then
For k = i-1 To 1 Step -1
If eval("z"&i-1) = eval("z"&k) then
objFSO.copyFile strFolder&eval("n"&k),"D:\vbs\bat\"
End if
next
else
For j=i-1 To i-4 Step -1
objFSO.copyFile strFolder&eval("n"&j),"D:\vbs\bat\"
Next
End if
End If
Set objFSO = Nothing
——————————————
本程序作用:拷贝文件夹下的四张最近的图片,如果最近同一时间的图片数量超过4则把所有的同一时间的图片都拷贝
大部分xp系统应该会完美拷贝,而Windows7就不一定了,可能Windows7默认的排列方式是按名称排列的,所以不会自动按时间排列了,如果排列方式是按时间的就能行。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询