如何建立壓縮資料夾的批次作業 (.bat)?

如何建立壓縮資料夾的批次作業 (.bat)?

我從 7zip 下載了他們的命令列工具 7za.exe,並且我必須執行以下腳本:

echo off

cls

set zip ="C:\7za.exe"

set filename="%date%.backup.zip"

set pathtobackup="C:\MyDocs"

%zip% -t7z %filename% %pathtobackup%\*.doc

我的目的是備份 MyDocs 資料夾(包括子資料夾)中的所有文件文件,並將它們放入一個帶有日期的 zip 檔案中。之後,我將使用 robocopy 將此檔案移至我的伺服器,但目前我在壓縮檔案時遇到一些問題。

有人知道嗎?無論如何,我也可以為該文件附加一個密碼嗎?

答案1

使用語法

7z a -tzip archive.zip -r src\*.cpp src\*.h

所以在你的情況下,它會是

7z a -t7z %filename% -r %pathtobackup%\*.doc

來源:http://sevenzip.sourceforge.jp/chm/cmdline/switches/recurse.htm

答案2

安裝 7z,您可以將此工作範例與刪除腳本一起使用,刪除超過 7 天的檔案。該腳本的作用是將檔案從給定的“輸入”資料夾壓縮到“輸出”資料夾。為了壓縮資料夾,您必須新增 /d 或壓縮資料夾中的所有檔案只需修改最後一個「%%X」。

REM This is a batch script to zip files in folder or add /d to zip folders.
REM This script is using 7z to zip files, installation is required - "[http://www.7-zip.org/a/7z938-x64.msi][1]"
REM Remember to point 'do' to 7z installed path 7z.exe

SET input1=D:\Backup\SampleFolder
SET input2=D:\Backup\SampleFolder2

SET output1=C:\ZipBackups\SampleFolder
SET output2=C:\ZipBackups\SampleFolder2

CD /d %input1%
for %%X in (*) do "C:\Program Files\7-Zip\7z.exe" a "%output1%\%%X.zip" "%%X"
FORFILES /P "%input1%" /M *.* /D -8 /C "cmd /c del @file"

CD /d %input2%
for %%X in (*) do "C:\Program Files\7-Zip\7z.exe" a "%output2%\%%X.zip" "%%X"
FORFILES /P "%input2%" /M *.* /D -8 /C "cmd /c del @file"

答案3

我為此找到了一個簡單的解決方案。假設您有多個子資料夾要壓縮在一個資料夾中。在這種情況下, 1. 下載並安裝 7zip 軟體。然後將 7z.exe 複製到要將子資料夾壓縮到的特定資料夾。

在記事本中,複製並貼上以下內容並另存為 .bat 檔案。 :

cd "your_Folder_path" for /d %%f in (*) do (7z a -t7z %%f.7z "your_Folder_path\%%f")

雙擊運行該檔案。

如果您想要刪除原始資料夾,請在右大括號之前新增以下內容:

rd /s /q "your_Folder_path\%%f"

答案4

set hour=%time:~0,2%
if "%hour:~0,1%" == " " set hour=0%hour:~1,1%
echo hour=%hour%
set min=%time:~3,2%
if "%min:~0,1%" == " " set min=0%min:~1,1%
echo min=%min%
set secs=%time:~6,2%
if "%secs:~0,1%" == " " set secs=0%secs:~1,1%
echo secs=%secs%

set year=%date:~-4%
echo year=%year%
set month=%date:~3,2%
if "%month:~0,1%" == " " set month=0%month:~1,1%
echo month=%month%
set day=%date:~0,2%
if "%day:~0,1%" == " " set day=0%day:~1,1%
echo day=%day%

set datetimef=%day%_%month%_%year%___%hour%_%min%_%secs%

echo datetimef=%datetimef%


path %path%;"C:\Program Files\7-Zip"

相關內容