簡體   English   中英

使用7-Zip在同一文件上壓縮和刪除

[英]Zip and delete on the same file using 7-Zip

我寫了一個批處理文件(使用7-Zip),它將文件放在一個文件夾上並分別壓縮到批處理文件中創建的另一個文件夾,然后我從原始文件夾中刪除了文件。

我試着寫它所以它會壓縮到同一個文件夾,但它會刪除所有內容,因為我的上一個命令聲明要從同一個文件夾中刪除文件。

原始文件夾名為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

我們假設文件夾E:\\Logs\\SmartLogger包含文件:

  • 7za920.zip
  • 7- zip.chm
  • LICENSE.TXT
  • readme.txt文件

目標是將此文件夾中的每個文件壓縮為具有相同文件名的ZIP文件,忽略該文件夾中所有已存在的*.zip文件,以便能夠每天運行此批處理文件一次。

@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"
)

執行上述批處理文件后,文件夾E:\\Logs\\SmartLogger包含:

  • 7za920.zip ...... 沒碰過
  • 7-zip.zip ... 包含7-zip.chm
  • license.zip ... 包含license.txt
  • readme.zip ... 包含readme.txt

或者目標是將此文件夾中的每個文件壓縮為具有相同文件名和文件擴展名的ZIP文件,忽略該文件夾中所有已存在的*.zip文件,以便能夠每天運行此批處理文件並附加文件擴展名.zip到每個壓縮文件。

@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"
)

執行上述批處理文件后,文件夾E:\\Logs\\SmartLogger包含:

  • 7za920.zip ...... 沒碰過
  • 7-zip.chm.zip ... 包含7-zip.chm
  • license.txt.zip ... 包含license.txt
  • readme.txt.zip ... 包含readme.txt

兩個批處理文件之間的差異是"%%~dpnA.zip""%%~A.zip"

要了解使用的命令及其工作方式,請打開命令提示符窗口,執行以下命令,並完全閱讀為每個命令顯示的所有幫助頁面。

  • echo /?
  • if /?
  • for /?
  • 7za --help

另請參閱Microsoft文章有關使用命令重定向運算符的解釋>nul

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM