我有下面的批处理文件脚本,它可以创建所有10个文件夹的压缩文件,但它会在压缩文件中创建同名的子文件夹,我不希望这样。
for /d %%X in (*) do "c:\Program Files\7-Zip\7z.exe" a "%%X.zip" "%%X\"
这将创建所有10个文件夹的压缩文件,但它在压缩文件中创建了相同名称的子文件夹,我不希望这样。
如果我对你的问题理解正确的话,最简单的方法是先进入每个目录执行任务。(使之成为'当前'),将当前目录下的所有内容压缩。(默认)然后再走出来。
@For /D %%G In (*)Do @PushD "%%G"&&"%ProgramFiles%\7-Zip\7z.exe" a -tzip "..\%%G.zip" -r&PopD
检查 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
)
)
)
创建一个文本文件,然后复制并粘贴以下内容。
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