【问题标题】:How to zip multiple folders using Batch script如何使用批处理脚本压缩多个文件夹
【发布时间】:2020-04-23 12:42:29
【问题描述】:

我有以下批处理文件脚本。

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

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

【问题讨论】:

  • 检查这个 - stackoverflow.com/questions/28043589/… - 给我几分钟来添加一个脚本作为答案......
  • 我有以下批处理文件脚本。 for /d %%X in (*) do "c:\Program Files\7-Zip\7z.exe" a "%%X.zip" "%%X\" 这将创建所有 10 个文件夹的 zip 文件,但它在 zip 文件中创建具有相同名称的子文件夹,我不希望这样。直接文件应该在 zip 文件中可见。有没有办法编辑该脚本来解决这个问题。
  • 所以你不想要文件夹本身而只想要文件?
  • 所有 10 个文件夹的 zip 文件应该单独创建,上面的文件对我有用,但是当我打开该 zip 文件时,其中还有一个同名的文件夹。我不想那样。

标签: windows batch-file cmd zip


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    检查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
        )
      )
    
    )
    

    【讨论】:

      【解决方案3】:

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

      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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-12-11
        • 2019-04-19
        • 2013-12-16
        • 1970-01-01
        • 1970-01-01
        • 2013-12-27
        • 2023-04-06
        相关资源
        最近更新 更多