使用 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"
。
要了解使用的命令及其工作原理,请打开命令提示符 window,在其中执行以下命令,并仔细阅读为每个命令显示的所有帮助页面。
echo /?
if /?
for /?
7za --help
另请参阅有关 Using command redirection operators 的 Microsoft 文章,了解对 >nul
的解释。
我写了一个批处理文件(使用 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"
。
要了解使用的命令及其工作原理,请打开命令提示符 window,在其中执行以下命令,并仔细阅读为每个命令显示的所有帮助页面。
echo /?
if /?
for /?
7za --help
另请参阅有关 Using command redirection operators 的 Microsoft 文章,了解对 >nul
的解释。