Board logo

标题: [技术讨论] 逐行扫描桌面TXT读取写入文件(32位)的VBS是否可以优化? [打印本页]

作者: 将脚本进行到底    时间: 2013-4-20 13:46     标题: 逐行扫描桌面TXT读取写入文件(32位)的VBS是否可以优化?

本帖最后由 将脚本进行到底 于 2013-5-2 23:36 编辑

脚本的功能正如题所说!但是感觉代码很臃肿,希望高手可以帮我优化些,另外在WIN7系统下测试发现如果不再管理员用户下运行,会提示“文件不存在”,我只知道是WMI的问题,由于WMI刚学,所以我想高手给点指点!
以下将源码献上,欢迎大家交流与讨论!
  1. dim b,d,e,c,h,j,k,l,m,n,o,p,t,v,y,name,name1
  2. strComputer = "."
  3. Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!//" & strComputer & "/root/cimv2")
  4. Set colOperatingSystems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
  5. For Each objOperatingSystem In colOperatingSystems
  6. name1=objOperatingSystem.Caption                                                           
  7. '获取系统的版本
  8. Next
  9. os7="microsoft windows 7"
  10. osxp="microsoft windows xp"
  11. v=instr(1,name1,osxp,1)
  12. y=instr(1,name1,os7,1)
  13. if v=1 then                                                                                                      
  14. '识别系统版本
  15. winxp()
  16.        else if  y=1 then
  17.        win7()
  18.        end if
  19. end if
  20. function win7()
  21. Set objGroup = GetObject("WinNT://./administrators")                                    
  22.             ‘获取WIN7系统管理员的权限
  23. For each objMember in objGroup.Members
  24. 'Wscript.Echo objMember.class & "=" & objMember.Name
  25. name=objmember.name
  26. next
  27. 'msgbox name
  28. set a=wscript.createobject("wscript.shell")
  29. a.popup "取消问题我已经解决了,可以在win7(32位)和xp(32位)下运行,但是还是必须是桌面上的TXT文件,实在抱歉,欢迎大家指教交流!好累!睡啦!",10,"说明",64
  30. set b=createobject("scripting.filesystemobject")
  31. d=trim(inputbox("请输入你要读取的文件名:"))
  32.         ‘判断读出文件是否存在或者合法
  33. if d<>"" then                                                                                                               
  34.   if (b.fileexists("C:\Users\nan\Desktop\"&d)) then   
  35.                else
  36.                t=msgbox("文件不存在!")
  37.                end if
  38.   if t<>1 then   ’是否点击确定
  39.                     do
  40.                     m=m+1
  41.                     e=trim(inputbox("请输入目标的文件名"))
  42.                           if e<>"" then
  43.                                          if (b.fileexists("C:\Users\"&name&"\Desktop\"&e)) then
  44.   ’判断写入文件是否合法
  45.                                              l=l+1
  46.                                              'msgbox l
  47.                                           else
  48.                                             msgbox"文件不存在,请重新输入文件名"
  49.                                           end if
  50.                           end if
  51. loop until b.fileexists("C:\Users\"&name&"\Desktop\"&e) or m=3 or e=""           
  52. ‘三次判断跳出
  53.     if e<>"" then
  54.         if m<>3 then
  55.               h=instrrev(e,".")
  56.               k=instr(e,".")
  57.           if(h<>k) then
  58.               e=mid(e,1,h-1)
  59.           end if
  60.          set c=b.opentextfile("C:\Users\"&name&"\Desktop\"&d,8,flase)
  61.          c.write" "
  62.          p=c.line
  63.          set c=b.opentextfile("C:\Users\"&name&"\Desktop\"&d,1,flase)                        
  64. '打开读的权限
  65.          'msgbox p
  66.          set i=b.opentextfile("C:\Users\"&name&"\Desktop\"&e,8,flase)                           
  67. '打开写的权限
  68.          for o=1 to p
  69.          f=c.readline                                                                                                         
  70. '读入文件
  71.          i.writeline f                                                                                                   
  72. '写入文件
  73.         next
  74.         a.popup "写入成功",2,"提示",64
  75.         else
  76.         msgbox"不好意思,三次机会已用完"
  77.         end if
  78.       else
  79.       end if
  80.   else
  81.   end if
  82. else
  83. end if
  84. end function
  85. '后面的和前面一样所以我只改了前面的
  86. function winxp()
  87. set a=wscript.createobject("wscript.shell")
  88. a.popup "取消问题我已经解决了,可以在win7(32位)和xp(32位)下运行,但是还是必须是桌面上的TXT文件,实在抱歉,欢迎大家指教交流!好累!睡啦!",10,"说明",64
  89. set b=createobject("scripting.filesystemobject")
  90. d=trim(inputbox("请输入你要读取的文件名:"))
  91. if d<>"" then
  92. if (b.fileexists("C:\Documents and Settings\hyf_soft\桌面\"&d)) then
  93. else
  94. t=msgbox("文件不存在!")
  95. end if
  96. if t<>1 then
  97. do
  98. m=m+1
  99. e=trim(inputbox("请输入目标的文件名"))
  100. if e<>"" then
  101. if (b.fileexists("C:\Documents and Settings\hyf_soft\桌面\"&e)) then
  102. l=l+1
  103. 'msgbox l
  104. else
  105. msgbox"文件不存在,请重新输入文件名"
  106. end if
  107. end if
  108. loop until b.fileexists("C:\Documents and Settings\hyf_soft\桌面\"&e) or m=3 or e=""
  109. if e<>"" then
  110. if m<>3 then
  111. h=instrrev(e,".")
  112. k=instr(e,".")
  113. if(h<>k) then
  114. e=mid(e,1,h-1)
  115. end if
  116. set c=b.opentextfile("C:\Documents and Settings\hyf_soft\桌面\"&d,8,flase)
  117. c.write" "
  118. p=c.line
  119. set c=b.opentextfile("C:\Documents and Settings\hyf_soft\桌面\"&d,1,flase)
  120. 'msgbox p
  121. set i=b.opentextfile("C:\Documents and Settings\hyf_soft\桌面\"&e,8,flase)
  122. for o=1 to p
  123. f=c.readline
  124. 'f=c.readline
  125. i.writeline f
  126. next
  127. a.popup "写入成功",2,"提示",64
  128. else
  129. msgbox"不好意思,三次机会已用完"
  130. end if
  131. else
  132. end if
  133. else
  134. end if
  135. else
  136. end if
  137. end function
复制代码

作者: czjt1234    时间: 2013-4-21 08:28

请处理好缩进,大小写

你这样,实在没兴趣看
作者: 将脚本进行到底    时间: 2013-4-21 14:01

好的!我随后改下,加上注释与调整下结构!
作者: 将脚本进行到底    时间: 2013-4-21 14:02

好的!我随后改下,加上注释与调整下结构!
作者: 将脚本进行到底    时间: 2013-4-21 14:02

好的!我随后改下,加上注释与调整下结构!
作者: czjt1234    时间: 2013-4-21 21:07

主程序帮你改了下
子程序看不清
  1. Set objWMIService = GetObject("Winmgmts:")
  2. Set colOperatingSystems = objWMIService.InstancesOf("Win32_OperatingSystem")
  3. For Each objOperatingSystem In colOperatingSystems
  4.     name1 = objOperatingSystem.Caption
  5. Next
  6. If InStr(1, name1, "microsoft windows xp", 1) Then
  7.     winxp()
  8. Else
  9.     Set objShell = CreateObject("Shell.Application")    'Win7下提权
  10.     objShell.ShellExecute "wscript.exe", Chr(34) & WScript.ScriptFullName & _
  11.                           Chr(34) & " uac", "", "runas", 1
  12.     win7()
  13. End If
复制代码

作者: 将脚本进行到底    时间: 2013-5-2 23:38

越改越乱了,以前还能对着行,现在连代码都对不上行了!郁闷!
作者: czjt1234    时间: 2013-5-3 15:02

所以呢,别人要帮你改,就要先看懂

要看懂,就要先对齐

你自己都对不齐,别人谁有那耐心?
作者: czjt1234    时间: 2013-5-5 09:47

本帖最后由 czjt1234 于 2013-5-6 19:47 编辑

http://bbs.bathome.net/thread-23276-1-3.html

你参考这个选择文件的对话框,省得别人输入,免去判断输入是否正确

就可以优化了

还有你查找下“当前用户的桌面”的用法




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