如何使用批处理脚本压缩多个文件夹

时间:2020-04-23 12:42:29

标签: batch-file

我有下面的批处理文件脚本。

for /d %%X in (*) do "c:\Program Files\7-Zip\7z.exe" a "%%X.zip" "%%X\"

这将创建所有10个文件夹的zip文件,但是会在zip文件中创建具有相同名称的子文件夹,而我不希望这样。直接文件应在zip文件中可见。 有什么办法可以编辑以上脚本来解决此问题。

3 个答案:

答案 0 :(得分:0)

创建一个文本文件,然后复制并粘贴以下内容:

START /W powershell Compress-Archive folder-name foldername.zip
START powershell Move-Item -Path "path-of-the-zipped-file" -Destination "path-you-want-the-file-to-be-moved-to"`

另存为zip.bat

答案 1 :(得分:0)

选中zipjs.bat。尝试将文件夹放在示例下面的列表中(zipjs.bat应该在同一目录中):

@echo off

set "folders_list=C:\folder1;C:\folder2;C:\folder3"
set "destination=C:\my.zip"

del "%destination%" /Q /F >nul 2>&1

for %%a in ("%folders_list%:;=";"%") do (
  if not exist "%destination%" (
    call zipjs.bat zipItem -source "%%~fa" -destination "%destination%" -force no
  ) else (
    call zipjs.bat addToZip -source  "%%~fa" -destination "%destination%" -force no
  )

)

编辑。在OP做出一些澄清后:

@echo off

set "folders_list=C:\folder1;C:\folder2;C:\folder3"
set "destination=C:\my.zip"

del "%destination%" /Q /F >nul 2>&1

for %%a in ("%folders_list%:;=";"%") do (
  if not exist "%destination%" (
    call zipjs.bat zipDirItems -source "%%~fa" -destination "%destination%" -force no
  ) else (
    for %%# in ("%%a\*") do (
       call zipjs.bat addToZip -source  "%%~f#" -destination "%destination%" -force no
    )
  )

)

答案 2 :(得分:0)

如果我正确理解了您的问题,执行任务的最简单方法是第一步进入每个目录(使其变为“当前”),将所有内容压缩到当前目录中,(默认),然后再次退出。

@For /D %%G In (*)Do @PushD "%%G"&&"%ProgramFiles%\7-Zip\7z.exe" a -tzip "..\%%G.zip" -r&PopD
相关问题