如何使用Batch脚本压缩多个文件夹?

问题描述 投票:0回答:1

我有下面的批处理文件脚本,它可以创建所有10个文件夹的压缩文件,但它会在压缩文件中创建同名的子文件夹,我不希望这样。

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

这将创建所有10个文件夹的压缩文件,但它在压缩文件中创建了相同名称的子文件夹,我不希望这样。

javascript batch-file
1个回答
0
投票

如果我对你的问题理解正确的话,最简单的方法是先进入每个目录执行任务。(使之成为'当前'),将当前目录下的所有内容压缩。(默认)然后再走出来。

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

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
  )

)

编辑: 经过上位者的一些说明。

@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
    )
  )

)

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

© www.soinside.com 2019 - 2024. All rights reserved.