![](/img/trans.png)
[英]7-Zip script to zip folders within a subdirectory and then delete original folder
[英]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
包含文件:
目標是將此文件夾中的每個文件壓縮為具有相同文件名的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
包含:
或者目標是將此文件夾中的每個文件壓縮為具有相同文件名和文件擴展名的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
包含:
兩個批處理文件之間的差異是"%%~dpnA.zip"
與"%%~A.zip"
。
要了解使用的命令及其工作方式,請打開命令提示符窗口,執行以下命令,並完全閱讀為每個命令顯示的所有幫助頁面。
echo /?
if /?
for /?
7za --help
另請參閱Microsoft文章有關使用命令重定向運算符的解釋>nul
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.