小弟請教一下,
當用VBScript程式控制一套商用軟體多次打開->執行動作->結束關閉。重複很多次後,商用軟體的執行動作越來越慢,到後來直接關閉。請幫忙解釋一下原理?以及該如何解決。謝謝。
因為你的情境說明粗淺、 沒附上程式碼片段可供參考, 所以我假設: 若是使用 WSH (cscript.exe
or wscript.exe
) 執行 VBScript 檔案 (.vbs
) 而啟動、 操作 MS-Excel 的情境下, 請開啟工作管理員(or tasklist
, Get-Process
)確認 Excel 行程是否已結束執行(除非你想要只關 Excel 檔案而不關 Excel 行程以供後續作業); 因為 Excel 視窗不見不代表 Excel 行程已結束, 常會有 Excel 行程卡在無法看見的提示訊息等異常狀況而維持等待的情形。 所以網路上常見到使用 objExcel.DisplayAlerts = False
等方法避開(或忽略) Excel 異常以關閉 Excel 行程。
( 另, 如果是操作網路上或網路分享的檔案, 還會牽涉到網路環境等各種狀況…… )
而 ccutmis大 所說 改用 Python 處理
的方式, 若是指使用 pywin32
等套件存取 Windows 相關 API 來控制 Excel 的方式, 基本上還是類似使用 WSH with VBScript 的方式, 都是啟動、 操作 Excel。 所以只要遇到 「 Excel 行程卡在無法看見的提示訊息等異常狀況而維持等待的情形 」, 那些維持等待的 Excel 行程還是會占用系統資源。
( 至於 ccutmis大 所說一堆 wscript.exe
, 我倒是有點好奇是啥狀況; 畢竟我過去大多是處裡 Excel 等那端點的莫名其妙後就沒事了。 )
提醒, 以上敘述是基於我的假設情境下, 很有可能不符合你的狀況。 至於處理方式請自行 Google 你可能的狀況與方案。
( 因為可能原因很多, 我只是就我過去最常遇到的這種案例提出說明以供參考方向。 )
至於 ccutmis 所說一堆 wscript.exe, 我倒是有點好奇是啥狀況
2023-04-01 17:25:28 我說 :
請問 VBScript 程式(.vbs) 執行結束 wscript.exe 仍在背景沒有結束的可能原因是什麼?
2023-04-01 17:25:46 ChatGPT說 :
可能的原因有以下幾點:
2023-04-01 17:27:23 我說 :
還有其它可能嗎?
2023-04-01 17:27:37 ChatGPT說 :
除了以上提到的原因之外,還有以下可能原因:
假設 VBS 在執行後沒有正常結束 wscript.exe ,又頻繁的執行 VBS(如樓主描述),就會有一堆 wscript.exe 在背景了...
謝謝各位大的解釋。
目前看起來的狀況是,感覺不是VBS的問題。查看背景資源後,沒有一個占用大的資源。
反倒是應用程式,那個商用軟體的CPU %數隨著處理project數越多。它的CPU占用一直往上加。再想想該如何解決這問題。
@jacky33:
看到你的回報(感謝滿足我的好奇心~), 忽然想起, 為避免你誤解, 提醒一下: 就算是被控制的軟體行程有異常, 問題亦可能是出在 VBScript 的控制敘述有問題而導致軟體行程異常。
( 畢竟各種軟體都常有各自的設計邏輯或習慣, 很多人都沒先了解軟體 API 等的結構或流程概要就因為誤會而遇上各種異常。 )
建議你找找該商業軟體的 API 等相關文件, 以幫助釐清問題。
謝謝re.Zero 大的解釋。
小弟非本科系,程式靠自學。"商業軟體的 API 等相關文件"我再好好研究一下。
順道請問一句,如果我想要將商業軟體的佔用資源釋放(我知道將商用軟體直接關掉再打開是最直接的方法)。那我會去查商用軟體的使用手冊或Google。有沒有相關的"專業關鍵字"可以提供給我方便查詢?謝謝。
@jacky33:
如果你有需要, 在軟體設計上的相關基本概念, 可參考一下 Garbage collection ( 垃圾回收 ) 。
至於在查詢的關鍵字上, 各家有各家為了各種面向的最佳化或理念而有著各樣的設計與用詞, 我很難提出適當的建議; 我個人的話, 在瀏覽 API 文件以外 ( 先了解概要資訊以便在尋思時有個底~ ), 就是賭運氣在估狗上: 「軟體英文名 (因為英文資訊較多且完備) + 資源控管相關關鍵字 (例如 GC(Garbage collection), CPU/memory usage/release, Caching, ...)」。 願你遇上的不是啥神奇狀況~
感謝回覆。