【发布时间】:2016-12-05 16:26:46
【问题描述】:
前段时间,我请求一些帮助来开发一个简短的批处理文件,以使用 7zip 压缩树内的文件,请参阅以下链接:
Compress separately files within subfolders
现在我想避免已经压缩的文件(.7z、.zip 文件)并跳转到下一个项目。
我还想删除以前在同一文件夹中多次使用原始批处理文件创建的压缩文件(如“.7z.7z”或“.zip.7z”)。 p>
这是我目前得到的:
@echo off
cd /d %~dp0
rem 7z.exe path
set sevenzip=
if "%sevenzip%"=="" if exist "%ProgramFiles(x86)%\7-zip\7z.exe" set sevenzip=%ProgramFiles(x86)%\7-zip\7z.exe
if "%sevenzip%"=="" if exist "%ProgramFiles%\7-zip\7z.exe" set sevenzip=%ProgramFiles%\7-zip\7z.exe
if "%sevenzip%"=="" echo 7-zip not found&pause&exit
@echo searching...
for /R %%I in (*) do (
if not exist %%I.zip if not exist %%I.7zip "%sevenzip%" a -mx -mmt4 "%%I.7z" -r -x!*.bat "%%I" && "%sevenzip%" t "%%I.7z" * -r
)
del "Compressing_files_7zip.bat.7z"
del *.7z.7z*
del *.zip.7z*
::::::::::::::::::::::::::For setting up shutdown 60' after the end of the process.Remove colons in the line below.
::shutdown.exe /s /t 3600
pause
这段代码我遇到的主要问题是:
-我无法检测到已经压缩的文件,因此,跳转到下一个 %%I 实体。
-从子文件夹中删除不需要的过度压缩文件。显然,'*' 通配符在循环内不起作用;另一方面,如果我寻找 'del %%I.7z.7z' 它也不起作用。
我读到我不能为“if”循环使用正确的“OR”函数,这就是我嵌套它们的原因。
提前谢谢你。
亚历克斯。
【问题讨论】:
标签: batch-file if-statement for-loop delete-file