明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

如何備份(恢復)存儲路徑含有空格的壓縮文件

[摘要]作者:李偉春、金梅(公安海警高等?茖W校計算機教研室 寧波市第六醫(yī)院內科) 摘 要:通過該方法的應用,可以把數(shù)據(jù)庫及有關文件壓縮到含有空格的文件夾中,并且解決了由于Windows的并行性處理而引發(fā)的一系列問題。關鍵字:Winrar 路徑 空格 Winrar是目前比較流行的高壓縮率的壓縮...
作者:李偉春、金梅
(公安海警高等?茖W校計算機教研室  寧波市第六醫(yī)院內科)

摘 要:通過該方法的應用,可以把數(shù)據(jù)庫及有關文件壓縮到含有空格的文件夾中,并且解決了由于Windows的并行性處理而引發(fā)的一系列問題。關鍵字:Winrar  路徑  空格
    Winrar是目前比較流行的高壓縮率的壓縮軟件,有關它的使用報道文章也比較多,但他們都沒能解決如‘壓縮文件的路徑名含有空格’的等難題。本人在開發(fā)《軍械管理系統(tǒng)》課題期間,因為前臺是Visual Basic、后臺采用的是Access數(shù)據(jù)庫,要求把數(shù)據(jù)庫隨時備份到硬盤的‘c:\Program Files’文件夾下,這樣用通常的辦法就不能進行恢復。經過分析,已經研究出解決的辦法,下面作一介紹,以便同行借鑒。

1. 解決空格的問題


在上面的表單中,如果按所選擇的路徑進行備份操作,將出現(xiàn)找不到文件的錯誤信息。解決方法是必須在未壓縮之前用MkDir在硬盤的根目錄中建立一個臨時的文件夾,把要操作的數(shù)據(jù)庫用FileCopy函數(shù)拷貝到臨時的文件夾中,在這里進行文件的壓縮工作,之后再拷貝到"c:\Program Files"的文件夾中,具體程序如下:
1.1 備份操作
tdir = "c:\temppath" '臨時路徑名
MkDir (tdir) '創(chuàng)建臨時路徑
FileCopy App.Path & "\jxgl.mdb", tdir & "\jxgl.mdb" '把文件從默認路徑中拷到所創(chuàng)建的臨時文件夾里
Rarexe = App.Path & "\winrar.exe"
src = tdir & "\jxgl.mdb"
des = tdir & "\jxgl.rar"
FileString = Rarexe & " a -ep " & des & " " & src
Result = Shell(FileString, vbHide) '在臨時的文件夾中完成壓縮的任務
If Err.Number <> 0 Then
MsgBox "無法壓縮數(shù)據(jù)庫:" & Err.Description, vbCritical
Exit Sub
FileCopy tdir & "\jxgl.rar", "c:\Program Files\jxgl.rar" '從臨時文件夾中再拷到所填寫的"c:\Program Files"里
1.2 恢復操作
tdir = "c:\temppath" '臨時路徑名
MkDir (tdir) '創(chuàng)建臨時路徑
FileCopy "c:\Program Files\jxgl.rar", tdir & "\jxgl.rar" '從"c:\Program Files"中把要恢復的壓縮文件拷貝到臨時文件夾中

Rarexe = App.Path & "\winrar.exe"
des = tdir
src = tdir & "\jxgl.rar"
FileString = Rarexe & " x -ep " & src & " " & "jxgl.mdb" & " " & des
Result = Shell(FileString, vbHide) '在臨時的文件夾中完成解包的任務
If Err.Number <> 0 Then
MsgBox "無法解開數(shù)據(jù)庫:" & Err.Description, vbCritical
Exit Sub
FileCopy tdir & "\jxgl.mdb", "c:\Program Files\mdb.rar" '從臨時文件夾中再拷到所填寫的"c:\Program Files"里

2. 解決數(shù)據(jù)庫恢復出錯的問題
Windows操作系統(tǒng)的一大特點就是進程的并行性,也就是在前一個任務未執(zhí)行完之前,下一個任務已經開始執(zhí)行,這有益于提高計算機的執(zhí)行速度,但也存在著隱患。我們在數(shù)據(jù)庫恢復時就遇到了此類問題。
例如:Winrar x a:\jxgl.rar jxgl.mdb c:\jxgl
FileCopy "c:\jxgl\jxgl.mdb", "c:\Program Files\jxgl.mdb"
上面這兩條命令行在PII/766計算機上執(zhí)行沒有任何問題,但在C/366計算機上執(zhí)行就出現(xiàn)了找不到"c:\jxgl\jxgl.mdb"的錯誤,經過大家的仔細分析,問題出在"進程的并行性"上。為了保障第二條命令的正常進行,必須使第一條命令執(zhí)行完,由此我們通過增加預留時間解決了該問題,方法如下:
Winrar x a:\jxgl.rar jxgl.mdb c:\jxgl
tt = Timer '取得機器的當前時間
Do While tt > Timer - 0.5 '延遲0.5秒
Loop
FileCopy "c:\jxgl\jxgl.mdb", "c:\Program Files\jxgl.mdb"
3.結束語
以上兩種問題的解決辦法未曾見到有關的報道,希望本文能對同行在軟件設計時,在數(shù)據(jù)庫的壓縮過程中有所幫助。
參考文獻:
謝東主編.Visual Basic 開發(fā)多媒體應用程序.北京:清華大學出版社

作者姓名:李偉春
職 稱:高級工程師
工作單位:公安海警高等?茖W校計算機教研室
通信地址:浙江省寧波市北侖區(qū)公安海警高等專科學校計算機教研室
郵政編碼:315801

作者姓名:金梅
職 稱:主治醫(yī)師
工作單位:寧波市第六人民醫(yī)院內科
通信地址:浙江省寧波市第六人民醫(yī)院內科
郵政編碼:315040