請選擇 進入手機版 | 繼續訪問電腦版

微剋多資訊

 找回密碼
 註冊

Login

Google帳號登入

搜索
回覆 3則 瀏覽 1635篇

[問題已解決] 【VBS】如何隨機延遲執行無限迴圈?

該用戶從未簽到

發表於 2019-3-26 13:17 | 顯示全部樓層 |閱讀模式
本帖最後由 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 playtime
Next

利用外部檔案:時間間隔.log
(時間間隔.log由AAA.bat的echo輸出)(稍解釋而已)
抓入其內容:字串半形數字
  1. 2
複製代碼
  1. 5
複製代碼
等等隨機數字
基本上大概是1~9而已
內容很單純
只有一列
純數字的字串

然後把該字串
strLine

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


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



該用戶從未簽到

發表於 2019-3-26 17:50 | 顯示全部樓層
本帖最後由 maodou 於 2019-3-26 18:08 編輯
  1. Do
  2.     Set objFSO = CreateObject("Scripting.FileSystemObject")
  3.     Set objFile = objFSO.OpenTextFile("時間間隔.log")
  4.     strLine = objFile.ReadLine
  5.     objFile.close
  6.     playtime = strLine * 1000
  7.     Wscript.Echo "Sleep for:", strLine, "seconds"
  8.     WScript.Sleep playtime
  9.     Wscript.Echo "Done."
  10. Loop
複製代碼

使用道具

該用戶從未簽到

 樓主| 發表於 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


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

使用道具

該用戶從未簽到

發表於 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...

使用道具

您需要登入後才可以回帖 登入 | 註冊

本版積分規則

Discuz! X

© 2009-2017 Microduo

快速回覆 返回頂部 返回列表