我如何只压缩子文件夹的内容而不是子文件夹本身?

How do i ONLY zip the subfolders' content rather than the subfolder itself?

我有一些文件夹,里面的内容是这样的:

Mainfolder
|
|---SubFolder1
    |
    |----ContentFiles1
    |----MoreContentFiles1
|
|---SubFolder2
    |
    |----ContentFiles2
    |----MoreContentFiles2
|
|---SubFolder3
    |
    |----ContentFiles3
    |----MoreContentFiles3

并想像这样压缩内容:

Subfolder1.zip
 |
 |--ContentFiles1
 |----MoreContentFiles1
 
Subfolder2.zip
 |
 |--ContentFiles1
 |----MoreContentFiles1
 
Subfolder3.zip
 |
 |--ContentFiles1
 |----MoreContentFiles1

但是,有一个问题。这些文件夹中有将近 600 个需要压缩。我尝试了各种几乎有效但没有成功的方法,例如:

 for /d %%X in (*) do "F:\Program Files-Zipz.exe" a "%%X.zip" "%%X\" -mx=5 –tzip

这个 bat 文件几乎满足了我的需要,但那些 zip 文件的格式是:

Subfolder1.zip
 |
 |--Subfolder1(folder)
    |----ContentFiles1
    |----MoreContentFiles1
 
Subfolder2.zip
 |
 |--Subfolder2(folder)
    |----ContentFiles1
    |----MoreContentFiles1
 
Subfolder3.zip
 |
 |--Subfolder3(folder)
    |----ContentFiles1
    |----MoreContentFiles1

遗憾的是,这些无法使用。

起初这似乎不是一项艰巨的任务,但即使在研究了一些有关批编码的知识并观看了多个不同的 YouTube 视频之后,我仍然没有合适的解决方案。问题是我发现的许多方法要么根本不起作用,要么已经过时了。

示例图片:

What i get with methods i have tried

What i need

甚至打不开的代码(过时或我使用不当):

 @echo off
 setlocal
 set zip="C:\Program Files\WinRAR\rar.exe" a -r -u
 dir C:\MyPictures /ad /s /b > C:\MyPictures\folders.txt
 for /f %%f in (C:\MyPictures\folders.txt) do if not exist C:\MyPictures\%%~nf.rar %zip% C:\MyPictures \%%~nf.rar %%f
 endlocal
 exit

和:

 @echo off
 setlocal
 for /d %%x in (C:\MyPictures\*.*) do "C:\Program Files-Zipz.exe" a -tzip "%%x.zip" "%%x\"
 endlocal
 exit

均来自:Batch file to compress subdirectories

注意:我确实更改了这些批处理代码的目录,但是没有用,我不确定“folder.txt”目录是什么意思。


因此,如果有人知道任何事情或者可以告诉我这是否不可能,那就太好了:)。

使用 .\folder\* 语法(点和星号):

for /d %%G in (*) do "F:\Program Files-Zipz.exe" a "%%G.zip" ".\%%G\*" -mx=5 –tzip

感谢https://superuser.com/a/340062