Como posso criar um trabalho em lotes (.bat) que zipar uma pasta?

2

A partir do 7zip eu baixei a ferramenta de linha de comando 7za.exe, e tenho que seguir o script:

echo off

cls

set zip ="C:za.exe"

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

set pathtobackup="C:\MyDocs"

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

Minha intenção é fazer backup de todos os arquivos doc na pasta MyDocs (incluindo subpastas) e colocá-los em um arquivo zip datado. Depois eu moverei este arquivo com robocopy para o meu servidor, mas no momento estou tendo alguns problemas para zipar os arquivos.

Alguém tem uma pista? De qualquer forma eu posso acrescentar uma senha para o arquivo também?

    
por Jason94 05.03.2014 / 10:41

4 respostas

4

Use a sintaxe

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

então, no seu caso, seria

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

Fonte: link

    
por 05.03.2014 / 10:54
3

Instale o 7z e você pode usar este exemplo de trabalho com o script de exclusão para arquivos com mais de 7 dias. O que este script faz, ele fecha os arquivos da pasta 'input' para a pasta 'output'. Para zipar pastas, você precisa adicionar / d ou zipar todos os arquivos dentro da pasta. Basta modificar o último "%% 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-Zipz.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-Zipz.exe" a "%output2%\%%X.zip" "%%X"
FORFILES /P "%input2%" /M *.* /D -8 /C "cmd /c del @file"
    
por 14.04.2015 / 16:42
1

Eu encontrei uma solução simples para isso. Suponha que você tenha várias subpastas para serem compactadas em uma pasta. Nesse caso, 1. Faça o download e instale o software 7zip. Em seguida, copie 7z.exe para a pasta específica em que você deseja compactar suas subpastas.

em um bloco de notas, copie e cole o seguinte e salve como arquivo .bat. :

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

Clique duas vezes para executar o arquivo.

Caso você queira excluir as pastas originais, adicione isso antes da chave de fechamento:

rd /s /q "your_Folder_path\%%f"
    
por 27.04.2018 / 09:54
-1
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-Zip"
    
por 30.11.2014 / 08:14