1.要壓中文檔名,須下載中文版WinRAR,安裝後,再將其中的rar.exe複製出來 2.網路執行,必須將rar.exe與被壓縮的檔案(或資料夾)置於相同目錄下 (網路執行壓縮不支援相對路徑,如果使用絕對路徑,壓出來的檔案,會按照絕對路徑一層一層壓進去) 3.下載並註冊,線上執行Server端外部程式的元件:ASPEXEC(免費元件) 4.透過ASPEXEC執行→bat檔→rar.exe(如此才能壓縮出正確路徑的壓縮檔) 例:壓縮d:/tmp/tmp_a/tmp_b資料夾中的所有子資料夾及檔案(含長中文檔名看看) 方法: 1.將rar.exe複製到d:/tmp/tmp_a/下,也就是與tmp_b同層目錄 2.建立bat檔放在哪裏無所謂,就放在D:/addzip.bat(addzip.bat內容如下), D: cd tmp/tmp_a rar.exe a -r tmp_b.zip tmp_b 3.ASP程式碼 '利用ASPExec元件執行壓縮------------------------------------- set Executor = Server.CreateObject("ASPExec.Execute") Executor.Application = "d:/addzip.bat" strResult = Executor.ExecuteDosApp Response.Write "<pre>" & strResult & "</pre>" Set Executor = Nothing PS:正常寫法應該是如下,但不支援相對路徑,而如果使用絕對路徑,則壓縮檔內容,就會把所有路徑資料夾都包進去。 '利用ASPExec元件執行壓縮------------------------------------- set Executor = Server.CreateObject("ASPExec.Execute") Executor.Application = "d:/tmp/tmpa/rar.exe" Executor.Parameters = " a -r tmp_b.zip tmp_b" (使用相對路徑,完全無法執行) Executor.Parameters = " a -r d:/tmp/tmp_a/tmp_b/tmp_b.zip d:/tmp/tmp_a/tmp_b/tmp_b"(使用絕對路徑,可以執行,但多了tmp及tmp_a空資料夾) strResult = Executor.ExecuteDosApp Response.Write "<pre>" & strResult & "</pre>" Set Executor = Nothing ============================================================ 補充說明: 今日測試線上壓縮時,遇到被壓縮的資料夾中又包含另一個.zip檔,結果可以壓縮成功,但無法解壓,總是出現「多重壓縮損毀...」的問題。 後來將壓縮檔改成rar格式,就順利解決,所以上面範例的bat檔內容建議 改成:(tmp_b.zip-->tmp_b.rar ) D: cd tmp/tmp_a rar.exe a -r tmp_b.rar tmp_b
标签:tmp,ASP,在线,執行,RAR,壓縮,Executor,rar,路徑 From: https://blog.51cto.com/u_512327/5933789