Board logo

标题: [技术讨论] vbs如何判断是否能执行网络共享文件夹里的程序并根据不同的系统版本执行不同操作 [打印本页]

作者: qq3475534    时间: 2016-11-11 23:58     标题: vbs如何判断是否能执行网络共享文件夹里的程序并根据不同的系统版本执行不同操作

本帖最后由 pcl_test 于 2016-11-12 08:13 编辑

如何VBS实现几个小功能
手上有一段代码想加几个功能上去··
  1. on Error Resume Next
  2. Dim wshshell
  3. Set wshshell = WScript.CreateObject("WScript.Shell")
  4.    wshshell.run "\\192.168.30.222\run$\tool\computerexe.bat",0,true   
  5.    Wscript.Sleep 5000
  6.    wshshell.run "C:\Program Files (x86)\Hintsoft\PubwinClient\update.exe",0
  7. wscript.quit
复制代码
1.代码优先运行第一段执行代码,运行网络批处理,网络批处理可访问的话就不继续往下运行了,因为东西通过网络批处理调用了,网络文件不可访问的话就继续往下运行脚本

2.VBS脚本自判断系统是XP系统 或者WIN7 64位系统

WIN7 64位系统的话就运行C:\Program Files (x86)\Hintsoft\PubwinClient\update.exe
XP 系统的话就运行 C:\Program Files\Hintsoft\PubwinClient\update.exe

由于自己不太懂,只能发帖求助了。


作者: pcl_test    时间: 2016-11-12 08:11

  1. if 存在 "\\192.168.30.222\run$\tool\computerexe.bat" then
  2.     run "\\192.168.30.222\run$\tool\computerexe.bat"
  3. else
  4.     if 存在 "C:\Program Files (x86)\Hintsoft\PubwinClient\update.exe" then
  5.        run "C:\Program Files (x86)\Hintsoft\PubwinClient\update.exe"
  6.     else
  7.       run "C:\Program Files\Hintsoft\PubwinClient\update.exe"
  8.     end if
  9. end if
复制代码

作者: qq3475534    时间: 2016-11-12 08:54

回复 2# pcl_test


    这个我刚测试VBS脚本报错了..是不是哪里有问题?

行1
字符4
错误 无效字符
代码 800a0408
源 microsoft vbscript 编译器错误
作者: pcl_test    时间: 2016-11-12 09:05

回复 3# qq3475534

2楼的是伪代码,自行改为vbs代码
作者: qq3475534    时间: 2016-11-12 11:21

本帖最后由 qq3475534 于 2016-11-12 11:34 编辑

回复 4# pcl_test
  1. on Error Resume Next
  2. Dim wshshell
  3. Set wshshell = WScript.CreateObject("WScript.Shell")
  4.    if "\\192.168.30.222\run$\tool\computerexe.bat" then
  5.     run "\\192.168.30.222\run$\tool\computerexe.bat"
  6. else
  7.     if "C:\Program Files (x86)\Hintsoft\PubwinClient\update.exe" then
  8.    Wscript.Sleep 5000
  9.        run "C:\Program Files (x86)\Hintsoft\PubwinClient\update.exe"
  10.     else
  11.    Wscript.Sleep 5000
  12.       run "C:\Windows\System32\cmd.exe"
  13.     end if
  14. end if
  15. wscript.quit
复制代码
你好版主,我改成这样,运行是不会报错了,但是测试起来实际文件没有被调用,

没有被执行,而且我想判断共享那个文件,有的话就调用共享的那个文件,不继续执行下一步命令,

没有的话就继续下一步,但是需要延时5秒,在执行
我测试的是cmd.exe,实际没被调用,估计代码哪里还有错误。
作者: pcl_test    时间: 2016-11-12 11:43

回复 5# qq3475534
把on Error Resume Next去掉就看得见报错了
作者: qq3475534    时间: 2016-11-12 11:53

回复 6# pcl_test


    你好版主能否提供一段完整不报错的脚本,我不太懂这些,麻烦了。
作者: yu2n    时间: 2016-11-12 12:01

  1. Dim wso, fso, s1, s2, s3
  2. Set wso = CreateObject("WScript.Shell")
  3. Set fso = CreateObject("Scripting.FileSystemObject")
  4. s1 = "\\192.168.30.222\run$\tool\computerexe.bat"
  5. s2 = "C:\Program Files\Hintsoft\PubwinClient\update.exe"
  6. s3= "C:\Program Files (x86)\Hintsoft\PubwinClient\update.exe"
  7. If fso.FileExists(s1) Then
  8. wso.Run s1
  9. ElseIf fso.FileExists(s2) Then
  10. wso.Run s2
  11. ElseIf fso.FileExists(s3) Then
  12. wso.Run s3
  13. End If
  14. Msgbox "Done!", vbInformation, WScript.ScriptName
复制代码

作者: qq3475534    时间: 2016-11-12 12:14

本帖最后由 qq3475534 于 2016-11-12 12:15 编辑

回复 8# yu2n


    你好,你的代码我刚测试起来会报错,运行几秒后

行 15
字符 2
代码 80070002
源 (NULL)
作者: yu2n    时间: 2016-11-12 17:04

本帖最后由 yu2n 于 2016-11-12 19:51 编辑

回复 9# qq3475534
  1. Dim wso, fso, s1, s2, s3
  2. Set wso = CreateObject("WScript.Shell")
  3. Set fso = CreateObject("Scripting.FileSystemObject")
  4. s1 = "\\192.168.30.222\run$\tool\computerexe.bat"
  5. s2 = "C:\Program Files\Hintsoft\PubwinClient\update.exe"
  6. s3= "C:\Program Files (x86)\Hintsoft\PubwinClient\update.exe"
  7. If fso.FileExists(s1) Then
  8. wso.Run """" & s1 & """"
  9. ElseIf fso.FileExists(s2) Then
  10. wso.Run """" & s2 & """"
  11. ElseIf fso.FileExists(s3) Then
  12. wso.Run """" & s3 & """"
  13. End If
  14. Msgbox "Done!", vbInformation, WScript.ScriptName
复制代码





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