永发信息网

批处理取文件修改时间并上传

答案:1  悬赏:60  手机版
解决时间 2021-04-08 03:58
批处理取文件修改时间并上传
最佳答案
用纯批处理比较麻烦(虽然也不是不可以。。)。建议用vbscript(结合ftp.exe),代码如下:
Option Explicit 
On Error Resume Next

Dim objFSO, objFolder, objFiles, f, objFTPScript, objShell
Dim TargetDir, DT_Now, TimeDiff, ftp_script
Dim ftp_server, ftp_user, ftp_password, ftp_run_command
' Initializating, could be running parameters.
TimeDiff = 30 'in minute. ' 文件时间戳和当前系统时间的差值
TargetDir = "C:datafile" ' 上传文件目录
ftp_server = "192.168.10.1" ' 换成自己需要的
ftp_user = "user" ' 用户id
ftp_password = "password" ' 用户密码
' Creating objects
Set objFSO = CreateObject("Scripting.FileSystemObject")
If Not objFSO.FolderExists(TargetDir) Then
    WScript.Echo (TargetDir & " not exist!")
    WScript.Quit (-1)
End If

Set objFolder = objFSO.GetFolder(TargetDir)
Set objFiles = objFolder.Files
ftp_script = objFSO.GetTempName & ".txt"
Set objFTPScript = objFSO.CreateTextFile (ftp_script, True)
objFTPScript.WriteLine(ftp_user)
objFTPScript.WriteLine(ftp_password)
objFTPScript.WriteLine("lcd" & " " & TargetDir)
objFTPScript.WriteLine("binary")
DT_Now = Now
For Each f In objFiles 
  'WScript.Echo f.Name, DateDiff("n", DT_Now, f.DateLastModified)
  If DateDiff("n", f.DateLastModified, DT_Now) > TimeDiff Then
    'WScript.Echo f.Name
    objFTPScript.WriteLine("put" & " " & f.Name)
  End If
Next
objFTPScript.WriteLine("quit")
objFTPScript.Close
Set objShell = CreateObject("WScript.Shell")
ftp_run_command = "%comspec%" & " /c " & "ftp -v -i -s:" & ftp_script & " " & ftp_server
'WScript.Echo ftp_run_command
objShell.Run ftp_run_command, 0, True
objFSO.DeleteFile ftp_script, True
WScript.Quit (0)追问谢谢你的解答,现在还有问题呢,时间判断没有起作用,还是将文件夹中的所有数据上传至ftp了,麻烦你再看看呗。
ftp上如果是指定的文件夹该怎么写呢?追答~百度限字数,所以完整代码不能附上~

① 关于指定ftp服务器上的路径问题,添加:
dim ,ftp_server_path' 在dim ftp_server那行的最后添加,注意前面那个,
..
ftp_server = "192.168.10.1"  '在这句后面添加
ftp_server_path = "user"' 新添加
..
objFTPScript.WriteLine("cd" & " " & ftp_server_path) ' 新添加
objFTPScript.WriteLine("lcd" & " " & TargetDir) ' 在这句之前添加上面那句② 关于时间判断问题。 你确定查看的是『最后修改时间』? 而不是『创建』或『最近访问』时间? 我这里测试的没有问题,你可以把TimeDiff“故意”调大些,看看效果如果?而且还有一点,理论上,当前时间的值应该比文件的时间要大(或新),但如果你的文件从其他地方拷贝过来,而附带的时间戳可能有误,导致文件时间可能会大于本地系统的时间。-- 如果这个情况出现,你如何处理?  
③ 请告知测试结果,有问题,请继续追问~

追问你好,能不能加一段判断文件有无在使用的语句,如果在使用的话不上传。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
MacBook Air显存问题
游戏为什么不把游戏里的卡牌怪物都做成3D的
我12岁,女生,想要学习武术防身,哪种好?
六月初八生日祝福,农历六月十五过生日有什么
200块钱左右,推荐个长短线入耳式耳机..
Myteacherinsistedthatwe______thephrases.A.
装满一立方米空间的球体质量与球体大小有关系
吨可以用字母什么表示,吨是用什么字母表示?
大家觉得Ella在《全员加速中》表现怎么样
小狗狗不吃不喝沒精神是啥病
我的京东订单怎么还没到啊都五天了
唐太宗吸取隋亡教训,轻徭薄赋,发展生产,革
《逝鸿传》最新txt全集下载
单选题Youcan'timaginethatagentleman_
外地联通卡打老家电信客服收费吗?
推荐资讯
黑客是一个怎样的概念???
高红地产贞观首府何时交房
数学:盘中的水果吃光了,用“0”表示
单选题两圆的半径分别为3cm和4cm,且两圆的圆
最新初一语文古诗词,人教版八年级上册语文课
一氯甲烷和氢氧化钠反应生成什么
It was almost midnight when a fire in the
为什么有些酒店档次一般,用的却都是英文系统
全包围丝圈脚垫哪种好?
红萝卜可以放香菇和猪肝一起炒吗
如图表示的是某条河流不同年代的流量变化曲线
单选题1944年6月6日英美盟军在诺曼底登陆,开
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?