폴더를 압축하는 일괄 작업(.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"

관련 정보