Board logo

标题: [已解决]我做的一个VBS不能访问有密码的服务器? [打印本页]

作者: dong1977    时间: 2009-7-20 20:52     标题: [已解决]我做的一个VBS不能访问有密码的服务器?

有一个问题想请教各位,我们公司需要每个 月都要备份一次邮件到服务器,以减少硬盘空间。因此我做了个VBS通过剪切的方式把一年前的邮件剪切到服务器上的共享邮件备份文件夹中,但是我做好后,测试了不能运行。平时各用户访问服务器是需要输入密码,我把服务器设成不需要输入密码也可以访问。然后再测试这个VBS,这次正常了。
问题是:VBS能不能绕过服务器密码直接把邮件剪 切到服务器的共享邮件备份文件夹中?
我对VBS不熟,代码是网上找的或别人给。麻烦各位帮我看看,能不能这样实现,要在哪个位置添加代码?
万分感谢!
  1. Dim fso,objFolder,objSubFolders,objSubFolder
  2. Dim file,StrCurPath,ServerPath,tmpF,fileCount
  3. Function CreateDir(path)
  4. If fso.FolderExists(path) Then
  5.       Exit Function
  6. End If
  7.    If Not fso.FolderExists(fso.GetParentFolderName(path)) Then
  8.       CreateDir fso.GetParentFolderName(path)   
  9.    End If
  10.   fso.CreateFolder(path)
  11. End Function
  12. Function CheckFolder(FPath)
  13.   Set objFolder=fso.GetFolder(FPath)
  14. For Each file In objFolder.Files
  15.       
  16.        If DateDiff("d",file.DateLastModified,datestr)>=1 And fso.GetExtensionName(file)="eml"then
  17.                   If Not fso.FolderExists(ServerPath&"\"& Mid(objFolder.Path,Len(StrCurPath)+1)) Then            
  18.                     CreateDir ServerPath&"\"&Mid(objFolder.Path,Len(StrCurPath)+1)           
  19.                   end if
  20.                     file.move ServerPath&"\"&Mid(objFolder.Path,Len(StrCurPath)+1) &"\"
  21.            fileCount=fileCount+1
  22.        End If
  23.   Next
  24. For Each objSubFolder In objFolder.SubFolders
  25.        CheckFolder objSubFolder
  26.   Next
  27.        Set objFolder=Nothing
  28. End Function
  29. If WScript.Arguments.Count<>0  Then
  30. if right(wscript.arguments(0),1)<>"\" then
  31.    msgbox "脚本参数错误,请检查!",,"备份运行提示"
  32.    wscript.quit
  33. end if   
  34. Set fso = CreateObject("Scripting.FileSystemObject")
  35. 'Set objComputer = CreateObject("Shell.LocalMachine")
  36. set objComputer=CreateObject("WSCRIPT.NETWORK")
  37. 'comName=objcomputer.MachineName
  38. comName=objComputer.ComputerName
  39. Set objcomputer=Nothing
  40. datestr=DateAdd("yyyy",-1,Date())
  41. ServerPath=wscript.arguments(0) & ComName&"\"&datestr  
  42. StrCurPath = fso.GetParentFolderName(Wscript.ScriptFullName)
  43. fileCount=0
  44. CheckFolder StrCurPath
  45. If Err Then
  46.    Err.Clear
  47.    set fso=nothing
  48.    MsgBox Err.Description & Chr(10) &"脚本参数错误,请检查,输入格式:"&Chr(10)&"\\FileServer\ShareDir\或 C:\dir\"
  49.    WScript.Quit
  50. End if   
  51. if fileCount<>0 then
  52. WScript.Echo "********* "&fileCount&" 个文件备份完成*********!"
  53. else
  54. WScript.Echo "***********  没有文件需要备份!*************"
  55. end if
  56. WScript.Echo "备份脚本运行成功!"
  57. Set fso=Nothing   
  58. Else
  59. WScript.Echo "脚本参数错误,请检查!",,"备份运行提示"
  60. End If
复制代码

[ 本帖最后由 dong1977 于 2009-7-30 14:54 编辑 ]
作者: jsj30651    时间: 2009-7-20 23:37

在尝试链接服务器前用通过VBS来调用CMD命令来完成带密码的IPC链接,然后再尝试链接服务器。

CMD下的命令格式是:

net use \\服务器名或IP\ipc$ "密码" /user:"用户名"

例如:
net use \\10.35.3.9\ipc$ "123" /user:"administrator"
作者: dong1977    时间: 2009-7-21 10:22

谢谢,
能不能忽略掉服务器的用户名和密码?因为我们有好几个分公司,每个分公司的服务器的用户名和密码都不一样。而且还是要放在任务计划里自动运行的,再次麻烦你了。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2