首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从文本文件中压缩子文件夹列表,并在文件名中包含父文件夹名?

如何从文本文件中压缩子文件夹列表,并在文件名中包含父文件夹名?
EN

Stack Overflow用户
提问于 2017-02-06 05:22:23
回答 1查看 477关注 0票数 0

我有一个.txt文件,其中包含一个非常长的生成的第三级文件夹列表,我想压缩每个文件夹的内容。因此,一个简化的例子,这将是list.txt的内容

代码语言:javascript
复制
F:\Folder\2005-05-11\[ABC #1] FolderA
F:\Folder\2005-05-11\[ABC #2] FolderB
F:\Folder\2005-05-26\[ABC #1] FolderA

如果我这么做

代码语言:javascript
复制
for /F "delims=" %%X in (list.txt) do "7z.exe" a -mx=0 "%%X.zip" "%%X\*"

每个zip的文件名只是正在压缩的最后一个目录。所以ABC #1,FolderA.zip等等。所有这些拉链将被移出这个上下文,所以我需要更清楚地命名它们。

在一个绝对理想的世界里,我希望他们取第二层的名字(日期),并且从最后一个文件夹中取方括号中的部分(总是一致的)。所以,2015-05-11 ABC #1.zip,但我不知道这在某种程度上是否可行。

因此,看起来更容易的选择就是将父目录包含在zip上,所以2005-05-11 ABC #1 FolderA.zip,我怎么能做到呢?

显然,我在当前的脚本中使用了7zip,但是如果使用WinRAR或其他工具更容易的话,那就好了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-06 05:50:19

代码语言:javascript
复制
@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
SET "filename1=%sourcedir%\q42060809.txt"
for /F "usebackqdelims=" %%X in ("%filename1%") do (
 FOR /f %%d IN ("%%~dpX.") DO (
  FOR /f "delims=[]" %%b IN ("%%~nX") DO (
   ECHO("7z.exe" a -mx=0 "%%~dpX%%~nxd[%%b].zip" "%%X\*"
  )
 )
)

GOTO :EOF

您需要更改sourcedir的设置以适应您的情况。

我在测试中使用了一个名为q42060809.txt的文件,其中包含了您的数据。

所需的命令只是用于测试目的的ECHO编辑。在验证命令是正确的之后,删除ECHO(以实际压缩文件。

当然,如果不“引用文件名”,则不需要usebackq

步骤2-将.附加到%%X~dp日期和路径部分。%%~nxd的结果是Name和eX张力最低的目录。

然后,只使用~n (Name)部分的%%X,使用括号作为分隔符对其进行令牌化,因此括号之间的部分将出现在%%b中。

然后混合并匹配适当的元素。如果需要的话,重新插入括号,如果这符合你的喜好,在打开的支架前再加一个空格.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42060809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档