标题: [技术讨论] 逐行扫描桌面TXT读取写入文件(32位)的VBS是否可以优化? [打印本页]
作者: 将脚本进行到底 时间: 2013-4-20 13:46 标题: 逐行扫描桌面TXT读取写入文件(32位)的VBS是否可以优化?
本帖最后由 将脚本进行到底 于 2013-5-2 23:36 编辑
脚本的功能正如题所说!但是感觉代码很臃肿,希望高手可以帮我优化些,另外在WIN7系统下测试发现如果不再管理员用户下运行,会提示“文件不存在”,我只知道是WMI的问题,由于WMI刚学,所以我想高手给点指点!
以下将源码献上,欢迎大家交流与讨论!- dim b,d,e,c,h,j,k,l,m,n,o,p,t,v,y,name,name1
- strComputer = "."
- Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!//" & strComputer & "/root/cimv2")
- Set colOperatingSystems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
- For Each objOperatingSystem In colOperatingSystems
- name1=objOperatingSystem.Caption
- '获取系统的版本
- Next
- os7="microsoft windows 7"
- osxp="microsoft windows xp"
- v=instr(1,name1,osxp,1)
- y=instr(1,name1,os7,1)
- if v=1 then
- '识别系统版本
- winxp()
- else if y=1 then
- win7()
- end if
- end if
- function win7()
- Set objGroup = GetObject("WinNT://./administrators")
- ‘获取WIN7系统管理员的权限
- For each objMember in objGroup.Members
- 'Wscript.Echo objMember.class & "=" & objMember.Name
- name=objmember.name
- next
- 'msgbox name
- set a=wscript.createobject("wscript.shell")
- a.popup "取消问题我已经解决了,可以在win7(32位)和xp(32位)下运行,但是还是必须是桌面上的TXT文件,实在抱歉,欢迎大家指教交流!好累!睡啦!",10,"说明",64
- set b=createobject("scripting.filesystemobject")
- d=trim(inputbox("请输入你要读取的文件名:"))
- ‘判断读出文件是否存在或者合法
-
- if d<>"" then
- if (b.fileexists("C:\Users\nan\Desktop\"&d)) then
- else
- t=msgbox("文件不存在!")
- end if
- if t<>1 then ’是否点击确定
- do
- m=m+1
- e=trim(inputbox("请输入目标的文件名"))
- if e<>"" then
- if (b.fileexists("C:\Users\"&name&"\Desktop\"&e)) then
- ’判断写入文件是否合法
- l=l+1
- 'msgbox l
- else
- msgbox"文件不存在,请重新输入文件名"
- end if
- end if
- loop until b.fileexists("C:\Users\"&name&"\Desktop\"&e) or m=3 or e=""
- ‘三次判断跳出
- if e<>"" then
- if m<>3 then
- h=instrrev(e,".")
- k=instr(e,".")
- if(h<>k) then
- e=mid(e,1,h-1)
- end if
- set c=b.opentextfile("C:\Users\"&name&"\Desktop\"&d,8,flase)
- c.write" "
- p=c.line
- set c=b.opentextfile("C:\Users\"&name&"\Desktop\"&d,1,flase)
- '打开读的权限
- 'msgbox p
- set i=b.opentextfile("C:\Users\"&name&"\Desktop\"&e,8,flase)
- '打开写的权限
- for o=1 to p
- f=c.readline
- '读入文件
- i.writeline f
- '写入文件
- next
- a.popup "写入成功",2,"提示",64
- else
- msgbox"不好意思,三次机会已用完"
- end if
- else
- end if
- else
- end if
- else
- end if
- end function
- '后面的和前面一样所以我只改了前面的
-
- function winxp()
- set a=wscript.createobject("wscript.shell")
- a.popup "取消问题我已经解决了,可以在win7(32位)和xp(32位)下运行,但是还是必须是桌面上的TXT文件,实在抱歉,欢迎大家指教交流!好累!睡啦!",10,"说明",64
- set b=createobject("scripting.filesystemobject")
- d=trim(inputbox("请输入你要读取的文件名:"))
- if d<>"" then
- if (b.fileexists("C:\Documents and Settings\hyf_soft\桌面\"&d)) then
- else
- t=msgbox("文件不存在!")
- end if
- if t<>1 then
- do
- m=m+1
- e=trim(inputbox("请输入目标的文件名"))
- if e<>"" then
- if (b.fileexists("C:\Documents and Settings\hyf_soft\桌面\"&e)) then
- l=l+1
- 'msgbox l
- else
- msgbox"文件不存在,请重新输入文件名"
- end if
- end if
- loop until b.fileexists("C:\Documents and Settings\hyf_soft\桌面\"&e) or m=3 or e=""
- if e<>"" then
- if m<>3 then
- h=instrrev(e,".")
- k=instr(e,".")
- if(h<>k) then
- e=mid(e,1,h-1)
- end if
- set c=b.opentextfile("C:\Documents and Settings\hyf_soft\桌面\"&d,8,flase)
- c.write" "
- p=c.line
- set c=b.opentextfile("C:\Documents and Settings\hyf_soft\桌面\"&d,1,flase)
- 'msgbox p
- set i=b.opentextfile("C:\Documents and Settings\hyf_soft\桌面\"&e,8,flase)
- for o=1 to p
- f=c.readline
- 'f=c.readline
- i.writeline f
- next
- a.popup "写入成功",2,"提示",64
- else
- msgbox"不好意思,三次机会已用完"
- end if
- else
- end if
- else
- end if
- else
- end if
- 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
主程序帮你改了下
子程序看不清- Set objWMIService = GetObject("Winmgmts:")
- Set colOperatingSystems = objWMIService.InstancesOf("Win32_OperatingSystem")
- For Each objOperatingSystem In colOperatingSystems
- name1 = objOperatingSystem.Caption
- Next
-
- If InStr(1, name1, "microsoft windows xp", 1) Then
- winxp()
- Else
- Set objShell = CreateObject("Shell.Application") 'Win7下提权
- objShell.ShellExecute "wscript.exe", Chr(34) & WScript.ScriptFullName & _
- Chr(34) & " uac", "", "runas", 1
- win7()
- 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 |