【问题标题】:Batch file script to folder in zip files批处理文件脚本到 zip 文件中的文件夹
【发布时间】:2016-02-03 19:30:56
【问题描述】:

我在这个模式中有一个文件夹结构。我刚刚展示了两个子目录和每个目录中的 2 个文件,但通常我在一个级别上有 n 个子目录,在它们下面有一个级别的文件(但可以是 n 个文件或文件夹)。

Directory master
folder 1:
  file1
  file2
folder 2:
  file 3
  file 4
  folder x

我需要创建一个 Windows 脚本,一个从主目录运行的批处理文件,并给我两个包含它们各自文件的 zip 文件 x.zip 和 y.zip。

1.zip (only contains file1 and file2 -without folder 1 )
2.zip (only contains file3 and file4 and folder x -without folder 2- )

zip 文件不包含文件夹 1 或文件夹 2

此代码执行此操作,但压缩到子文件夹为 1.zip ( 文件夹 1 文件 1 文件2 ) 2.zip ( 文件夹 2( 文件 3 文件4 文件夹 x ) )

for /d %%a in (*) do (ECHO zip -r -p "%%~na.zip" ".\%%a\*")

【问题讨论】:

  • 你能告诉我你在 ECHO zip -r -p "%%~na.zip" ".\%%a*" 命令中使用的压缩软件是什么吗?

标签: batch-file


【解决方案1】:

我相信您可以使用以下使用 7-zip 压缩文件的代码来实现您想要的:

@echo off
setlocal enabledelayedexpansion
set YOUR_DIR=%1
set OWNING_DIR=%~dp0
set zipext=.zip

for /f "tokens=*" %%L in ('dir /b "%YOUR_DIR%"' ) do (
   set FOLDER_NAME=%%L
     set zipname=%OWNING_DIR%\!FOLDER_NAME!%zipext%
     set ERRORLEVEL=0
     type NUL
     set DIR_TO_CHECK=%YOUR_DIR%\!FOLDER_NAME!
     IF EXIST "!DIR_TO_CHECK!"\* (
       pushd %YOUR_DIR%\!FOLDER_NAME! >NUL 2>&1
       if %ERRORLEVEL% equ 0 (
         for /f "tokens=*" %%a in ( 'dir /b') do (
            "C:\Program Files\7-Zip\7z.exe" a  "!zipname!" "%%a"             
          )
       )
       popd
      ) 
   )

将其复制到名为 zip_files.bat 的批处理文件中并使用

zip_files "Directory_master"

【讨论】:

  • 原帖在哪里说正在使用 7Zip?该问题询问的是批处理文件,而不是有关如何通过批处理文件在其他软件中执行此操作的建议。您的回答相当于有人询问如何在 Windows 批处理文件中执行某些操作,而您回答 嗯,在 OSX 上您可以...。它没有回答所提出的问题。
  • 我的答案是一个批处理文件脚本,它只是使用 7-zip 压缩文件。 OP想知道如何使用批处理文件来完成!我在哪里建议不要使用批处理文件?
  • 再读一遍我写的。该问题不问如何通过先安装一些其他第三方软件来压缩这些文件?。它不使用 7Zip,因此使用 7Zip 的解决方案无法回答所提出的问题。给出相同的批处理文件示例(不需要 OP 安装额外的软件),我将删除我的反对意见。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-10
  • 1970-01-01
  • 2021-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多