曾经为批处理改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?

大体上就是这个思路,个人感觉可行,但是方法很笨,哪位老兄有更好的方法不妨交流一下

标签: none

已有 11 条评论

  1. 这篇文章,算是笔记了,怎么不弄个代码高亮呢,看着好累啊,嘿嘿。

    1. FROYO

      嗯,随手记下一点灵感,或许以后能有用

  2. 这年头还有VB程序猿啊,估计都是怀旧吧。

    1. FROYO

      哪里是程序猿,只是没事儿瞎搞

  3. 呵呵,对代码一窍不通的飘过

  4. 简单的批处理语句可以改成vbs,一些命令vbs不一定有。转换还不如直接写新的VBS文件。

  5. 程序猿~

  6. 羡慕程序员啊,想怎么样自己写代码

    1. FROYO

      不是程序员,瞎写的。。。

  7. 博主有才啊

    1. FROYO

      呃呃,这个就是瞎想的,没什么才

评论已关闭