jmsdhn 發表於 2019-3-26 13:17

【VBS】如何隨機延遲執行無限迴圈?

本帖最後由 jmsdhn 於 2019-3-26 13:22 編輯

打擾一下
此VBS(仍有錯誤)主要想完成的是
在隨機(或指定)延遲時間情況下
無限循環執行
AAA.bat

內容是:Set objFSO = CreateObject("Scripting.FileSystemObject")Set objFile = objFSO.OpenTextFile("時間間隔.log")Set ws = CreateObject("Wscript.Shell")

For i = 1 to 90000  ws.run "AAA.bat",0  strLine = objFile.ReadLine  objFile.close  playtime = strLine * 60 * 1000  WScript.sleep playtimeNext
利用外部檔案:時間間隔.log
(時間間隔.log由AAA.bat的echo輸出)(稍解釋而已)
抓入其內容:字串半形數字2或5等等隨機數字
基本上大概是1~9而已
內容很單純
只有一列
純數字的字串

然後把該字串
strLine

當成數字
算出playtime
來當作執行下一循環前的延遲


不過目前卡在strLine 被警告沒有定義之類的
想請教這個VBS該如何改
才能隨機延遲執行循環
感謝指教



maodou 發表於 2019-3-26 17:50

本帖最後由 maodou 於 2019-3-26 18:08 編輯

Do
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFile = objFSO.OpenTextFile("時間間隔.log")
    strLine = objFile.ReadLine
    objFile.close
    playtime = strLine * 1000
    Wscript.Echo "Sleep for:", strLine, "seconds"
    WScript.Sleep playtime
    Wscript.Echo "Done."
Loop

jmsdhn 發表於 2019-3-26 18:21

本帖最後由 jmsdhn 於 2019-3-26 19:01 編輯

感謝回應

一直以為set指令只能在迴圈外面
看來這部分跟BAT類似
甚至這兩個set還必須在迴圈內才行
沒有提到的
Set ws = CreateObject("Wscript.Shell")
放在外面即可吧
等下試試執行aaa.bat

另外請教
因為自己的PC上現在執行了兩個VBS
一個是大大給的VBS(測試中)
它一直在迴圈XD
而另一個是我更早前一直在執行的VBS

有何方法可以只關掉這個測試中的VBS呢?
還是只能全面關閉
個人以前都是用這個指令來全關XD
taskkill /f /im wscript.exe /t


後面那問題問得有點弱
看來就是去工作管理員直接關它吧

maodou 發表於 2019-3-26 22:18

jmsdhn 發表於 2019-3-26 18:21
有何方法可以只關掉這個測試中的VBS呢?
還是只能全面關閉
個人以前都是用這個指令來全關XD
taskkill /f /im wscript.exe /t

後面那問題問得有點弱
看來就是去工作管理員直接關它吧
你可以在VBS中寫一段, 把VBS執行時的Process ID寫到某一個log file, 然後就可以用taskkill /pid...{:9_267:}

頁: [1]
查看完整版本: 【VBS】如何隨機延遲執行無限迴圈?