Windows 要压缩父文件夹中存在的4个不同文件夹中的所有内容(文件/文件夹)

Windows 要压缩父文件夹中存在的4个不同文件夹中的所有内容(文件/文件夹),windows,for-loop,batch-file,cmd,Windows,For Loop,Batch File,Cmd,我希望压缩4不同文件夹中的所有内容(文件夹/文件),并希望将生成的4不同.zip文件与其对应的父文件夹同名 例如,在位置D:\test\pk下,我在pk文件夹下有4个文件夹: knomBk-2.4-1 knomBk-2.3-1 knomBk-2.5-1 knomBk-2.6-1 在这四个文件夹中,我有一组相似的内容(文件/文件夹)。我想一个接一个地压缩这四个文件夹中的所有内容,并将生成的4.zip文件复制到D:驱动器上的某个位置 因此,我会得到如下结果: D:\outputzipfiles\k

我希望压缩
4
不同文件夹中的所有内容(文件夹/文件),并希望将生成的
4
不同
.zip
文件与其对应的父文件夹同名

例如,在位置
D:\test\pk
下,我在
pk
文件夹下有
4个
文件夹:

knomBk-2.4-1
knomBk-2.3-1
knomBk-2.5-1
knomBk-2.6-1
在这四个文件夹中,我有一组相似的内容(文件/文件夹)。我想一个接一个地压缩这四个文件夹中的所有内容,并将生成的
4
.zip
文件复制到
D:
驱动器上的某个位置

因此,我会得到如下结果:

D:\outputzipfiles\knomBk-2.4-1.zip
D:\outputzipfiles\knomBk-2.3-1.zip
D:\outputzipfiles\knomBk-2.5-1.zip
D:\outputzipfiles\knomBk-2.6-1.zip
我怎么做

我在(目录)do{command..}中为%a尝试了
循环命令,如下所示:

 D:\test\pk>  FOR %a in (`DIR \b  *-1`) do "C:\\Program Files\\7-Zip\\7z.exe" a -tzip d:/outputzipfiles/   -o"%~na"
我知道上面的命令是错误的,因为它一定类似于-tzip d:\outputzipfiles\knomBk-*.zip,但我不知道如何做


我还使用
forfiles
命令尝试了一些组合,但没有成功。

这是我的初始测试设置(下次,您可能希望为我们提供类似的内容)

当我需要像你一样的东西时,我会一步一步地做。通过学习这项技术,您可以解决许多问题。事情是这样的:

  • 检查
    dir\b*-1
    是否按预期工作:

    D:\temp\sotest>dir \b *-1
     Volume in drive D is Mirror
     Volume Serial Number is B693-F1F1
    
     Directory of D:\
    
    File Not Found
    
     Directory of D:\temp\sotest
    
    05.11.2019  21:47    <DIR>          knomBk-2.3-1
    05.11.2019  21:47    <DIR>          knomBk-2.4-1
    05.11.2019  21:47    <DIR>          knomBk-2.5-1
    05.11.2019  21:47    <DIR>          knomBk-2.6-1
                   0 File(s)              0 bytes
                   4 Dir(s)  2.945.857.200.128 bytes free
    
    回答:没有。对于('dir/b*-1')中的/F%a,正确的是
    ,使用
    /F
    作为参数和直撇号回显%a

  • 检查我所需的参数(如
    %~na
    )是否有效:

    回答:没有。
    ~n
    部分将
    .3-1
    部分解释为不需要的文件扩展名。只需使用
    “%a”

  • 检查不带for循环的命令是否有效:

    D:\temp\sotest>for %a in (`dir /b *-1`) do echo %a
    
    D:\temp\sotest>echo `dir
    `dir
    
    D:\temp\sotest>echo /b
    /b
    
    D:\temp\sotest>"C:\Program Files\7-Zip\7z.exe" a -tzip "d:/temp/sotest/" -o"x"
    
    回答:没有。文件名不正确,生成的zip文件包含所有目录,而不是一个目录。斜杠的方向不对。正确的命令是
    “C:\Program Files\7-Zip\7z.exe”a-tzip-o“d:\temp\sotest\”“x”knomBk-2.3-1/*
    ,其中
    -o
    位于正确的位置,并且要添加目录名

  • 最后,结合一切:

    for /F %a in ('dir /b *-1' ) do "C:\Program Files\7-Zip\7z.exe" a -tzip -o"d:\temp\sotest\" "%a.zip" "%a/*"
    

  • “不成功”是什么意思?没有zip文件,错误消息,…?
    *
    -
    1
    将不匹配
    knomBk-2.4
    。不是错误消息,但我无法获得所需的响应。我的意思是,当我在(
    DIR\b*-1
    )中为%a运行D:\test\pk>时,执行“C:\\Program Files\\7-Zip\\7z.exe”a-tzip output.Zip-o“%~na”我在同一位置得到一个output.Zip文件夹,但我想在同一位置得到4个Zip文件,如{knomBk-2.4.-1.Zip、knomBk-2.3-1.Zip、knomBk-2.5-1.Zip和knomBk-2.6-1.Zip}。我知道我的命令不正确,请让我知道如何获取这些zip文件对不起,它实际上是knomBk-2.4-1我现在写问题时输入错误,我在问题中更正了它,
    D:\temp\sotest>"C:\Program Files\7-Zip\7z.exe" a -tzip "d:/temp/sotest/" -o"x"
    
    for /F %a in ('dir /b *-1' ) do "C:\Program Files\7-Zip\7z.exe" a -tzip -o"d:\temp\sotest\" "%a.zip" "%a/*"