2016-08-21 3 views
3

하나의 폴더에서 파일을 가져 와서 배치 파일에 생성 된 다른 폴더로 개별적으로 압축 한 배치 파일 (7-Zip 사용)을 작성한 다음 삭제했습니다 원래 폴더 파일.7- 우편 번호를 사용하여 동일한 파일에서 우편 번호 및 삭제

동일한 폴더로 압축 할 수 있도록 쓰려고했지만 동일한 폴더에서 파일을 삭제하라는 마지막 명령으로 인해 모든 내용이 삭제됩니다.

원래 폴더는 SmartLogger이고 새 것은 SmartLoggerZipped입니다.

SmartLogger의 파일을 압축하여 동일한 폴더에 남겨두고 폴더의 원본 파일을 삭제해야합니다.

@echo off 
SET hr=%time:~0,2% 
IF %hr% lss 10 SET hr=0%hr:~1,1% 
SET SrcDir=E:\Logs\SmartLogger 
SET DestDir=E:\Logs\SmartLoggerZipped 
IF NOT EXIST "%DestDir%" MD "%DestDir%" 
ECHO. 
ECHO Compressing files and folders in E:\Logs\SmartLogger 
ECHO drive and moving to E:\Logs\SmartLoggerZipped and 
ECHO then delete from E:\Logs\SmartLogger 
ECHO. 
FOR %%A IN ("%SrcDir%\*.*") DO 7za a -tzip "%DestDir%\%%~NXA.zip" "%%~A" -mx5 && DEL /Q /F "%%~A" 
ECHO. 
PAUSE 
+0

환경 변수 'hr'은 전혀 사용되지 않습니다. 그리고 배치 파일은'*. * '를 단지'*'로 수정해야하고, %% ~ NXA.zip'에서'%% ~ nxA.zip'까지 수정해야 더 아름답습니다. 그래서 당신의 문제는 무엇입니까 당신은 무엇을 요구하고 있습니까? – Mofi

+0

예 내가 만든 새 폴더에서 처음으로 날짜를 만들고 싶었습니다. 여기에 남았으므로 지울 것입니다. 새 폴더를 만들지 않고 동일한 폴더로 압축하고 해당 디렉터리에서 이전 파일을 지우려고합니다. –

답변

1

우리가 폴더 E:\Logs\SmartLogger를 가정 해 보자는 파일이 포함되어

  • 7za920.zip
  • 7 zip.chm LICENSE.TXT을
  • 의 readme.txt

목표는이 폴더의 각 파일을 ZIP 파일 wi로 압축하는 것입니다 이 파일 이름은 해당 폴더에 이미 존재하는 모든 파일 (예 : *.zip)을 무시하고 매일 한 번씩이 배치 파일을 실행할 수 있습니다.

위에 배치 파일 실행 후 폴더 E:\Logs\SmartLogger 포함
@echo off 
for %%A in ("E:\Logs\SmartLogger\*") do (
    if /I not "%%~xA" == ".zip" 7za.exe a -tzip -mx5 -y -- "%%~dpnA.zip" "%%~A" >nul && del /Q /F "%%~A" 
) 

: 7 지퍼 포함 ...

  • 7-zip.zip 닿았

    • 7za920.zip ...하지 .chm
    • license.zip ... 에는 license.txt가 포함되어 있습니다.
    • readme.zip은 ...

    또는 목표는 동일한 파일 이름과 해당 폴더에있는 모든 기존 *.zip 파일을 무시하고 파일 확장자를 ZIP 파일로이 폴더에있는 각 파일을 압축하는 것입니다 readme.txt를 포함 이 배치 파일을 매일 한 번씩 실행하고 각 압축 파일에 파일 확장자 .zip을 추가 할 수 있습니다.

    폴더 E:\Logs\SmartLogger 포함
    @echo off 
    for %%A in ("E:\Logs\SmartLogger\*") do (
        if /I not "%%~xA" == ".zip" 7za.exe a -tzip -mx5 -y -- "%%~A.zip" "%%~A" >nul && del /Q /F "%%~A" 
    ) 
    

    위의 배치 파일 실행 후 :

  • 7-zip.chm.zip 감동

    • 7za920.zip ... 하지 ... 7을 포함 -zip.chm
    • license.txt.zip ... 에는 license.txt가 포함되어 있습니다.
    • readme.txt.zip ... 에는 readme가 들어 있습니다.

    이 txt 두 배치 파일 간의 차이 "%%~A.zip""%%~dpnA.zip"이다.

    사용 된 명령과 그 작동 방법을 이해하려면 명령 프롬프트 창을 열고 다음 명령을 실행하고 각 명령에 대해 표시된 모든 도움말 페이지를 모두주의 깊게 읽어야합니다.

  • 또한 >nul에 대한 설명은 Microsoft 기사에 대한 Using command redirection operators를 참조

  • 7za --helpif /?
  • for /?echo /?
    • .

  • +0

    감사합니다! 지금은 잘 작동하고있어! –