设为首页 收藏本站
查看: 870|回复: 0

[经验分享] 自动上传FTP脚本

[复制链接]

尚未签到

发表于 2016-6-8 12:17:22 | 显示全部楼层 |阅读模式
自动上传FTP脚本
2011年05月11日
  自动上传本地文件到FTP
  Do
  Dim a  
  a="C:\Documents and Settings\hexin\upload"
  Dim fso, f, f1, fc, s
  Set WshShell=CreateObject("Wscript.Shell")
  strComputer="10.10.77.66"   '需要上传的电脑IP
  strUserName="name"   '用户名
  strPassword="name"   '密码
  Set fso = CreateObject("Scripting.FileSystemObject")
  Set f = fso.GetFolder(a)  
  Set fc = f.Files
  For Each f1 in fc   
  '如果上传成功,则删除本地目录中的文件
  a= FTPUpload(strComputer,strUserName,strPassword,f1.Path,"\")
  If(a=true)then
  fso.DeleteFile(f1)
  End If
  Next
  Wscript.Sleep 1000*5  '每五秒中执行一次
  loop
  ON ERROR RESUME NEXT
  Function FTPUpload(sSite, sUsername, sPassword, sLocalFile, sRemotePath)
  '上传
  Const OpenAsDefault = -2
  Const FailIfNotExist = 0
  Const ForReading = 1
  Const ForWriting = 2
  Set oFTPScriptFSO = CreateObject("Scripting.FileSystemObject")
  Set oFTPScriptShell = CreateObject("WScript.Shell")
  sRemotePath = Trim(sRemotePath)
  sLocalFile = Trim(sLocalFile)
  If InStr(sRemotePath, " ") > 0 Then
  If Left(sRemotePath, 1)  """" And Right(sRemotePath, 1)  """" Then
  sRemotePath = """" & sRemotePath & """"
  End If
  End If
  '  If InStr(sLocalFile, " ") > 0 Then
  '    If Left(sLocalFile, 1)  """" And Right(sLocalFile, 1)  """" Then
  '      sLocalFile = """"& sLocalFile & """"
  '    End If
  '  End If
  If Len(sRemotePath) = 0 Then
  sRemotePath = "\"
  End If
  If InStr(sLocalFile, "*") Then
  If InStr(sLocalFile, " ") Then
  FTPUpload = "Error: Wildcard uploads do not work if the path contains a " & _
  "space." & vbCRLF
  FTPUpload = FTPUpload & "This is a limitation of the Microsoft FTP client."
  Exit Function
  End If
  ElseIf Len(sLocalFile) = 0 or Not oFTPScriptFSO.FileExists(sLocalFile) Then  
  FTPUpload = "Error: File Not Found."
  Exit Function
  End If
  sFTPScript = sFTPScript & "USER " & sUsername & vbCRLF
  sFTPScript = sFTPScript & sPassword & vbCRLF
  sFTPScript = sFTPScript & "cd " & sRemotePath & vbCRLF
  sFTPScript = sFTPScript & "binary" & vbCRLF
  sFTPScript = sFTPScript & "prompt n" & vbCRLF
  sFTPScript = sFTPScript & "put " &Chr(34)& sLocalFile &Chr(34)& vbCRLF'上传的时候添加双引号来处理路径中的非法字符
  sFTPScript = sFTPScript & "quit" & vbCRLF & "quit" & vbCRLF & "quit" & vbCRLF
  sFTPTemp = oFTPScriptShell.ExpandEnvironmentStrings("%TEMP%")
  sFTPTempFile = sFTPTemp & "\" & oFTPScriptFSO.GetTempName
  sFTPResults = sFTPTemp & "\" & oFTPScriptFSO.GetTempName
  Set fFTPScript = oFTPScriptFSO.CreateTextFile(sFTPTempFile, True)
  fFTPScript.WriteLine(sFTPScript)
  fFTPScript.Close
  Set fFTPScript = Nothing
  oFTPScriptShell.Run "%comspec% /c FTP -n -s:" & sFTPTempFile & " " & sSite & " > " & sFTPResults, 0, TRUE
  Wscript.Sleep 1000
  Set fFTPResults = oFTPScriptFSO.OpenTextFile(sFTPResults, ForReading, _
  FailIfNotExist, OpenAsDefault)
  sResults = fFTPResults.ReadAll
  fFTPResults.Close
  '删除零时文件
  oFTPScriptFSO.DeleteFile(sFTPTempFile)
  oFTPScriptFSO.DeleteFile (sFTPResults)
  '上传后的返回值
  If InStr(sResults, "226 Transfer complete.") > 0 Then
  FTPUpload = True
  ElseIf InStr(sResults, "File not found") > 0 Then
  FTPUpload = "Error: File Not Found"
  ElseIf InStr(sResults, "cannot log in.") > 0 Then
  FTPUpload = "Error: Login Failed."
  Else
  FTPUpload = "Error: Unknown."
  End If
  Set oFTPScriptFSO = Nothing
  Set oFTPScriptShell = Nothing
  End Function
  Function FTPDownload(sSite, sUsername, sPassword, sLocalPath, sRemotePath, sRemoteFile)
  Const OpenAsDefault = -2
  Const FailIfNotExist = 0
  Const ForReading = 1
  Const ForWriting = 2
  Set oFTPScriptFSO = CreateObject("Scripting.FileSystemObject")
  Set oFTPScriptShell = CreateObject("WScript.Shell")
  sRemotePath = Trim(sRemotePath)
  sLocalPath = Trim(sLocalPath)
  If InStr(sRemotePath, " ") > 0 Then
  If Left(sRemotePath, 1)  """" And Right(sRemotePath, 1)  """" Then
  sRemotePath = """" & sRemotePath & """"
  End If
  End If
  If Len(sRemotePath) = 0 Then
  sRemotePath = "\"
  End If
  If Len(sLocalPath) = 0 Then
  sLocalpath = oFTPScriptShell.CurrentDirectory
  End If
  If Not oFTPScriptFSO.FolderExists(sLocalPath) Then
  FTPDownload = "Error: Local Folder Not Found."
  Exit Function
  End If
  sOriginalWorkingDirectory = oFTPScriptShell.CurrentDirectory
  oFTPScriptShell.CurrentDirectory = sLocalPath
  sFTPScript = sFTPScript & "USER " & sUsername & vbCRLF
  sFTPScript = sFTPScript & sPassword & vbCRLF
  sFTPScript = sFTPScript & "cd " & sRemotePath & vbCRLF
  sFTPScript = sFTPScript & "binary" & vbCRLF
  sFTPScript = sFTPScript & "prompt n" & vbCRLF
  sFTPScript = sFTPScript & "mget " & sRemoteFile & vbCRLF
  sFTPScript = sFTPScript & "quit" & vbCRLF & "quit" & vbCRLF & "quit" & vbCRLF
  sFTPTemp = oFTPScriptShell.ExpandEnvironmentStrings("%TEMP%")
  sFTPTempFile = sFTPTemp & "\" & oFTPScriptFSO.GetTempName
  sFTPResults = sFTPTemp & "\" & oFTPScriptFSO.GetTempName
  Set fFTPScript = oFTPScriptFSO.CreateTextFile(sFTPTempFile, True)
  fFTPScript.WriteLine(sFTPScript)
  fFTPScript.Close
  Set fFTPScript = Nothing
  oFTPScriptShell.Run "%comspec% /c FTP -n -s:" & sFTPTempFile & " " & sSite & _
  " > " & sFTPResults, 0, TRUE
  Wscript.Sleep 1000
  Set fFTPResults = oFTPScriptFSO.OpenTextFile(sFTPResults, ForReading, _
  FailIfNotExist, OpenAsDefault)
  sResults = fFTPResults.ReadAll
  fFTPResults.Close
  If InStr(sResults, "226 Transfer complete.") > 0 Then
  FTPDownload = True
  ElseIf InStr(sResults, "File not found") > 0 Then
  FTPDownload = "Error: File Not Found"
  ElseIf InStr(sResults, "cannot log in.") > 0 Then
  FTPDownload = "Error: Login Failed."
  Else
  FTPDownload = "Error: Unknown."
  End If
  Set oFTPScriptFSO = Nothing
  Set oFTPScriptShell = Nothing
  End Function
  由于是我自己编写的,可能存在BUG,但是我没有找出来,哪位兄弟看出来了或者找出来了  吼吼啊

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-227872-1-1.html 上篇帖子: AIX 关闭ftp服务 下篇帖子: 如何设置FTP权限
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表