从目录创建多个档案,但不将目录根名称添加到档案中

从目录创建多个档案,但不将目录根名称添加到档案中

此批处理适用于在文件夹中创建多个存档,但会将根文件夹添加到存档中。我希望它只添加根目录中的文件。这是我的代码:

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

答案1

您只需使用为了循环省略参数/d,它将按照您描述创建 zip 存档文件的方式工作,并且不包含其父文件夹。

命令

笔记: 这将为目录中的每个文件添加一个 zip 存档文件,并且 zip 中只有该文件。

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

笔记: 这会将目录中的所有文件添加到您指定的一个 zip 文件中。

for %%X in (*) do "C:\Program Files\7-Zip\7z.exe" a "<MyZipFileName>.zip" "%%~X"

嵌套循环命令

笔记: 这会仅将批处理文件所在目录下的目录中的文件添加到与目录名称匹配的 zip 文件中。

@ECHO ON

FOR /F "TOKENS=*" %%A in ('DIR /S /B /AD "*"') DO (
  FOR %%B IN (*) DO (
      "C:\Program Files\7-Zip\7z.exe" a "%%~fA.zip" "%%~fA\*")
)
EXIT

更多资源

  • 对于/F
  • FOR /?

        tokens=x,y,m-n  - specifies which tokens from each line are to
                          be passed to the for body for each iteration.
                          This will cause additional variable names to
                          be allocated.  The m-n form is a range,
                          specifying the mth through the nth tokens.  If
                          the last character in the tokens= string is an
                          asterisk, then an additional variable is
                          allocated and receives the remaining text on
                          the line after the last token parsed.
    
  • 目录
  • 为了
  • (添加)命令

相关内容