如何備份(恢復(fù))存儲路徑含有空格的壓縮文件
發(fā)表時(shí)間:2024-06-20 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]作者:李偉春、金梅(公安海警高等?茖W(xué)校計(jì)算機(jī)教研室 寧波市第六醫(yī)院內(nèi)科) 摘 要:通過該方法的應(yīng)用,可以把數(shù)據(jù)庫及有關(guān)文件壓縮到含有空格的文件夾中,并且解決了由于Windows的并行性處理而引發(fā)的一系列問題。關(guān)鍵字:Winrar 路徑 空格 Winrar是目前比較流行的高壓縮率的壓縮...
作者:李偉春、金梅
(公安海警高等?茖W(xué)校計(jì)算機(jī)教研室 寧波市第六醫(yī)院內(nèi)科)
摘 要:通過該方法的應(yīng)用,可以把數(shù)據(jù)庫及有關(guān)文件壓縮到含有空格的文件夾中,并且解決了由于Windows的并行性處理而引發(fā)的一系列問題。關(guān)鍵字:Winrar 路徑 空格
Winrar是目前比較流行的高壓縮率的壓縮軟件,有關(guān)它的使用報(bào)道文章也比較多,但他們都沒能解決如‘壓縮文件的路徑名含有空格’的等難題。本人在開發(fā)《軍械管理系統(tǒng)》課題期間,因?yàn)榍芭_是Visual Basic、后臺采用的是Access數(shù)據(jù)庫,要求把數(shù)據(jù)庫隨時(shí)備份到硬盤的‘c:\Program Files’文件夾下,這樣用通常的辦法就不能進(jìn)行恢復(fù)。經(jīng)過分析,已經(jīng)研究出解決的辦法,下面作一介紹,以便同行借鑒。
1. 解決空格的問題
在上面的表單中,如果按所選擇的路徑進(jìn)行備份操作,將出現(xiàn)找不到文件的錯誤信息。解決方法是必須在未壓縮之前用MkDir在硬盤的根目錄中建立一個(gè)臨時(shí)的文件夾,把要操作的數(shù)據(jù)庫用FileCopy函數(shù)拷貝到臨時(shí)的文件夾中,在這里進(jìn)行文件的壓縮工作,之后再拷貝到"c:\Program Files"的文件夾中,具體程序如下:
1.1 備份操作
tdir = "c:\temppath" '臨時(shí)路徑名
MkDir (tdir) '創(chuàng)建臨時(shí)路徑
FileCopy App.Path & "\jxgl.mdb", tdir & "\jxgl.mdb" '把文件從默認(rèn)路徑中拷到所創(chuàng)建的臨時(shí)文件夾里
Rarexe = App.Path & "\winrar.exe"
src = tdir & "\jxgl.mdb"
des = tdir & "\jxgl.rar"
FileString = Rarexe & " a -ep " & des & " " & src
Result = Shell(FileString, vbHide) '在臨時(shí)的文件夾中完成壓縮的任務(wù)
If Err.Number <> 0 Then
MsgBox "無法壓縮數(shù)據(jù)庫:" & Err.Description, vbCritical
Exit Sub
FileCopy tdir & "\jxgl.rar", "c:\Program Files\jxgl.rar" '從臨時(shí)文件夾中再拷到所填寫的"c:\Program Files"里
1.2 恢復(fù)操作
tdir = "c:\temppath" '臨時(shí)路徑名
MkDir (tdir) '創(chuàng)建臨時(shí)路徑
FileCopy "c:\Program Files\jxgl.rar", tdir & "\jxgl.rar" '從"c:\Program Files"中把要恢復(fù)的壓縮文件拷貝到臨時(shí)文件夾中
Rarexe = App.Path & "\winrar.exe"
des = tdir
src = tdir & "\jxgl.rar"
FileString = Rarexe & " x -ep " & src & " " & "jxgl.mdb" & " " & des
Result = Shell(FileString, vbHide) '在臨時(shí)的文件夾中完成解包的任務(wù)
If Err.Number <> 0 Then
MsgBox "無法解開數(shù)據(jù)庫:" & Err.Description, vbCritical
Exit Sub
FileCopy tdir & "\jxgl.mdb", "c:\Program Files\mdb.rar" '從臨時(shí)文件夾中再拷到所填寫的"c:\Program Files"里
2. 解決數(shù)據(jù)庫恢復(fù)出錯的問題
Windows操作系統(tǒng)的一大特點(diǎn)就是進(jìn)程的并行性,也就是在前一個(gè)任務(wù)未執(zhí)行完之前,下一個(gè)任務(wù)已經(jīng)開始執(zhí)行,這有益于提高計(jì)算機(jī)的執(zhí)行速度,但也存在著隱患。我們在數(shù)據(jù)庫恢復(fù)時(shí)就遇到了此類問題。
例如:Winrar x a:\jxgl.rar jxgl.mdb c:\jxgl
FileCopy "c:\jxgl\jxgl.mdb", "c:\Program Files\jxgl.mdb"
上面這兩條命令行在PII/766計(jì)算機(jī)上執(zhí)行沒有任何問題,但在C/366計(jì)算機(jī)上執(zhí)行就出現(xiàn)了找不到"c:\jxgl\jxgl.mdb"的錯誤,經(jīng)過大家的仔細(xì)分析,問題出在"進(jìn)程的并行性"上。為了保障第二條命令的正常進(jìn)行,必須使第一條命令執(zhí)行完,由此我們通過增加預(yù)留時(shí)間解決了該問題,方法如下:
Winrar x a:\jxgl.rar jxgl.mdb c:\jxgl
tt = Timer '取得機(jī)器的當(dāng)前時(shí)間
Do While tt > Timer - 0.5 '延遲0.5秒
Loop
FileCopy "c:\jxgl\jxgl.mdb", "c:\Program Files\jxgl.mdb"
3.結(jié)束語
以上兩種問題的解決辦法未曾見到有關(guān)的報(bào)道,希望本文能對同行在軟件設(shè)計(jì)時(shí),在數(shù)據(jù)庫的壓縮過程中有所幫助。
參考文獻(xiàn):
謝東主編.Visual Basic 開發(fā)多媒體應(yīng)用程序.北京:清華大學(xué)出版社
作者姓名:李偉春
職 稱:高級工程師
工作單位:公安海警高等?茖W(xué)校計(jì)算機(jī)教研室
通信地址:浙江省寧波市北侖區(qū)公安海警高等專科學(xué)校計(jì)算機(jī)教研室
郵政編碼:315801
作者姓名:金梅
職 稱:主治醫(yī)師
工作單位:寧波市第六人民醫(yī)院內(nèi)科
通信地址:浙江省寧波市第六人民醫(yī)院內(nèi)科
郵政編碼:315040