将批处理改写VB代码
曾经为批处理改VB代码的问题头疼过很久,百度了很长时间没找到比较好的方法
昨天熬夜突发奇想,感觉自己找到了思路,趁现在还有点感觉,先写下来记录在这里
思路是这样的,定义一个数组,比如叫Shell_S(1000)
Dim Shell_S(1000) as string
然后将批处理读到数组中
Dim t as string
Dim i as long
Open App.Path & "\1.bat" For Input as #1
Do While EOF(1) = False
Line Input #1, t
Shell_S(i)=t
i=i+1
Loop
Close #1
好了,这个批处理文件被记录在数组中了,接下来就是一条一条的运行这些指令。怎么样能让它一条接一条的运行,而不是并行执行,我想到一个很笨的办法,看下面的代码:
Static j as long
j=0
Shell Shell_S(j) & " > " & App.Path & "\" & trim(str(j)) & ".tmp", ?vbHide
这样就会执行批处理中的第一句,并且将运行结果记录在0.tmp文件中
接下来要做的就是检测0.tmp,检测到0.tmp再去运行Shell_S(1)中的指令,不停循环这个过程,直至批处理中的所有指令被执行完毕。这里我又想到一个笨办法,用Timer控件(是不是太怂了)
Timer1.Interval=50
Timer1.Enabled=True
Timer1_Timer() 中就是检测了
Dim i as long
For i = 0 to 1000
If Dir(App.Path & "\" trim(str(i)) & ".tmp") <> "" Then
Kill?App.Path & "\" trim(str(i)) & ".tmp"
If i<1000 Then ?Shell Shell_S(i+1)?& " > " & App.Path & "\" & trim(str(i+1)) & ".tmp", ?vbHide
Exit For
End if
Next
其实还可以将批处理的运行结果显示在程序中,只需要将*.tmp读到字符串中,显示即可
通宵之后很困,但还是想到了一些问题,比如说如果有Pause怎么办,如果有选择的情况怎么办。至于解决办法么,实在没精力去想了,Sendkey?vbHide?
大体上就是这个思路,个人感觉可行,但是方法很笨,哪位老兄有更好的方法不妨交流一下
这篇文章,算是笔记了,怎么不弄个代码高亮呢,看着好累啊,嘿嘿。
嗯,随手记下一点灵感,或许以后能有用
这年头还有VB程序猿啊,估计都是怀旧吧。
哪里是程序猿,只是没事儿瞎搞
呵呵,对代码一窍不通的飘过
简单的批处理语句可以改成vbs,一些命令vbs不一定有。转换还不如直接写新的VBS文件。
程序猿~
羡慕程序员啊,想怎么样自己写代码
不是程序员,瞎写的。。。
博主有才啊
呃呃,这个就是瞎想的,没什么才