2009-09-02 117 views
10

我正在創建一個備份實用程序,用於將文本文件中列出的所有文件壓縮。我使用MS ACCESS作爲我的前端和7-Zip進行壓縮。這些是我正在使用的命令:7-zip命令行

7zG.exe a c:\Backup\backup.zip 
@c:\temp\tmpFileList.txt 

所有文件壓縮時都沒有它們的路徑。有沒有辦法在zip文件中包含每個文件的路徑?然後,當提取backup.zip時,這些文件將被恢復到其原始文件夾結構。

謝謝

+0

如果您設法將路徑合併到zip文件中,請使用相對路徑,否則您將無法將其恢復到除原始位置以外的其他任何位置。 – pavium 2009-09-02 08:10:07

回答

4

7-Zip的命令行程序是7z或7za。以下是有關可用選項的helpful post。 -r(遞歸)選項存儲路徑。

+0

感謝Vinay的迴應..但我無法在我的7-zip目錄中找到7za.exe,也有7z.exe有0個字節。我使用7zG.exe,因爲它顯示的是GUI進度條而不是DOS屏幕。唯一的問題是它不包括文件所在的路徑 – Arnold 2009-09-02 08:23:40

-1

而不是選項a使用選項x,這將創建目錄,但僅用於提取,而不是壓縮。

+2

不相關;操作系統詢問在壓縮文件中存儲路徑,而不是解壓縮。 – Fred 2016-02-22 20:19:19

6

this 7-zip forum thread中,很多人都表達了對這個功能的渴望,7-zip的開發者Igor指出FAQ question這個標題爲「如何存儲檔案中完整路徑的文件?」。達到類似的結果。

簡而言之:體積(一個列表的文件上C:\,一個用於D:\等)

  • 然後文件中的每個卷的列表

    • 單獨的文件,
      1. CHDIR到根目錄的適當卷(例如,cd /d C:\
      2. 創建一個文件列表路徑相對到volu我的根目錄下(例如,C:\Foo\Bar成爲Foo\Bar
      3. 像以前一樣執行7z a archive.7z @filelist這個新的文件列表
      4. 全路徑解壓時,請務必CHDIR到適當的卷的根目錄第一
  • 1

    我沒有看過這個,但從臀部拍攝我會說,他們放棄了便攜式的命令行支持。人們在便攜式應用程序中沒有做太多命令行工作的原因是,操作系統(Windows)需要將可執行文件添加到%path%包含列表中。

    如果使用命令行工具沒有滿足這個要求,那麼這個工具非常繁瑣。

    7z -a

    d:\便攜式\ Z7 \ Z7 -ac:\到\存檔\文件夾*

    打字說出來的一切是爲什麼GUI的事情就像是便攜式應用纔有意義它(應用程序)可以記住它自己的位置併爲你處理這些東西,如果你不能運行它,你就會知道它沒有連接。

    如果你真的想要便攜式應用程序來包含,儘管你可以隨時安裝完整版本,並拉出所需的7z.exe並將其放入可移植文件夾,確保它在所需的DLL中。

    確定連接後你必須設置你的路徑。

    http://www.redfernplace.com/software-projects/patheditor/ - 一個好的路徑編輯器(向下)如果你有很多路徑信息,那麼有用20+難以閱讀。

    http://www.softpedia.com/get/System/System-Miscellaneous/Path-Editor.shtml - 爲路徑編輯alternet源

    這不是建議修改你的系統路徑temproary 「便攜式」 硬盤雖然manualy做到這一點:

    集路徑=%路徑%;「d: \便攜式\ Z7 \「;

    當您運行DOS CMD.EXE或http://sourceforge.net/p/conemu/home/Home/

    其他的答案解決其他問題的更好的,我不打算嘗試..

    http://www.codejacked.com/zip-up-files-from-the-command-line/ - 爲Z7和z7a命令行的使用很好的參考。

    PS:對不起necro,但我覺得它需要更直接的答案爲什麼(即使它只是推測)。

    0

    由於7-拉鍊版本9.25阿爾法存在可被用於存儲完整的文件路徑包括驅動器號到存檔新-spf開關。

    7zG.exe a -spf c:\BAckup\backup.zip @c:\temp\tmpFileList.txt 
    

    現在應該工作得很好。

    0

    7-Zip需要列表文件中的相對路徑,否則它將只存儲文件名,導致重複的文件名錯誤。

    假設你的列表中包含完整的路徑名:

    • 編輯列表文件,刪除驅動器的前綴,C:\
    • 確保您的驅動器的根當您運行7Z使用上面的列表文件。
    • 然後它會存儲路徑,不會抱怨重複的名稱。它需要列表文件中的相對路徑。

    如果您的列表文件具有相對於另一個文件夾的路徑,則應該從該文件夾運行7Z。

    更新:我從上面的另一個帖子注意到,新的7-Zip有一個-spf選項,不需要上述步驟。尚未對其進行測試,但我的步驟適用於沒有此選項的早期版本。