大家好,感谢您的回答,
首先,我试图找到问题的答案,但我没有找到任何答案。
我有一个文件夹和子文件夹树,我想使用7zip分别压缩这些文件夹中的文件。
我从这个网站获得了这段代码,它可以实现我想要的功能,但它将压缩文件放在主文件夹中:
set extension=.*
for /R %%a in (*%extension%) do "%sevenzip%" a -mx "%%~na.zip" "%%a"
我想知道我是否可以获取每个文件的zip文件并将其放在包含源文件的子文件夹中。或者执行上述过程并将每个zip文件放在相应的子文件夹中。
我尝试过双击&For; d /#39;但我无法得到它:
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
for /D %%O in (*) do (
for /R %%I in ("%%O\*") do (
"%sevenzip%" a -mx "%%~na.zip" "%%a"
:: rd /s /q "%%I" **Because I do not want to delete anything by now.
)
)
再次,谢谢。
亚历。
答案 0 :(得分:0)
如果您的文件夹结构有些复杂,那么最好使用dir
中的普通列表:
dir /a:-d /s /b /o
只需在for
中使用其输出:
for /f %%f in ('dir /a:-d /s /b /o') do (
echo %%f <-- %%f is a full path to a file, do something with it
)
顺便说一句,7zip有一个有用的选项-sdel
,可以在成功创建存档时删除源文件。
答案 1 :(得分:0)
这是最终代码:
@echo off
cd / d%~dp0
rem 7z.exe路径
设置sevenzip =
如果&#34;%sevenzip%&#34; ==&#34;&#34;如果存在&#34;%ProgramFiles(x86)%\ 7-zip \ 7z.exe&#34;设置sevenzip =%ProgramFiles(x86)%\ 7-zip \ 7z.exe
如果&#34;%sevenzip%&#34; ==&#34;&#34;如果存在&#34;%ProgramFiles%\ 7-zip \ 7z.exe&#34;设置sevenzip =%ProgramFiles%\ 7-zip \ 7z.exe
如果&#34;%sevenzip%&#34; ==&#34;&#34;未找到echo 7-zip&amp; pause&amp; exit
@echo搜索......
for /R %%I in (*) do (
"%sevenzip%" a -mx -mmt4 "%%I.7z" -r -x!*.bat "%%I"
)
del&#34; Compressing_files_7zip.bat.7z&#34; *
del * .7z.7z
del * .zip.7z
::::::::::::::::::::::::::::设置关机60&#39;在该过程结束后。在下面的行中移动冒号。 :: shutdown.exe / s / t 3600
暂停
感谢所有人的支持,尤其是对弗罗斯特的支持。
答案 2 :(得分:0)
对于不使用7zip的更简单版本:
for /f %%f in ('dir /a:-d /s /b /o *.mdb') do (
zip -r -p "%%f.zip" "%%f"
)