用于将文件压缩到文件夹中的批处理文件/Powershell 脚本

Batch file / Powershell script to zip files in folders

我有很多文件夹,里面有文件例如:

Folder1 示例内容:

File1.txt
File2.txt
File3.xml
File4.jpg
.
.
.

压缩后的结果:Folder1.zip

Folder2 示例内容:

File12.txt
File22.txt
File32.xml
File42.jpg
.
.

压缩后的结果:Folder2.zip

如何仅压缩每个文件夹中的所有文件(而不是整个文件夹),结果文件名如 "Foldername.zip"。我找到了这段代码 for /d %%a in (*) do (ECHO zip -r -p "%%~na.zip" ".\%%a\*"),但它压缩了整个文件夹,而不仅仅是文件。

我通过以下步骤解决了这个问题:

  1. 创建空 zip 文件
  2. 将此文件复制到 "working folder"
  3. 中的所有文件夹
  4. 用文件夹名称重命名所有 zip 文件
  5. 将 .txt、.jpg、.xml 文件添加到 zip。

这是一个工作代码:

@echo off
setlocal EnableDelayedExpansion

for /f "delims=" %%a in ('dir /A:D /B') do (
xcopy /y "Path_to_empty_zip\Test.zip" ".\%%~na\"
rename "%%~na\Test.zip" "%%~na.zip"
)
for /f "delims=" %%a in ('dir /A:D /B') do (  
cd "Path_to_working_folder\%%~na\"
zip -r "%%~na.zip" "*.txt"
zip -r "%%~na.zip" "*.jpg"
zip -r "%%~na.zip" "*.xml"
)
pause

我发现了一些没有解决方案的类似问题,因为将我的解决方案发布为 "answer on my question"。