在子文件夹中单独压缩文件

时间:2016-01-29 11:53:18

标签: batch-file cmd 7zip zipfile subdirectory

大家好,感谢您的回答,

首先,我试图找到问题的答案,但我没有找到任何答案。

我有一个文件夹和子文件夹树,我想使用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.

        )
    )

再次,谢谢。

亚历。

3 个答案:

答案 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"
)