如何重命名子文件夹或zip文件中的文本文件

时间:2019-08-06 04:33:07

标签: windows 7zip

我有多个具有唯一名称的zip文件夹,但是文件夹中的文件都具有相同的名称。我需要重命名文本文件以匹配文件夹名称。我还需要将那些重命名的文本文件移至工作目录。

例如,我有以下内容:

name1.zip解压缩为name1 \ AncestryDNA.txt,但必须为name1.txt。 name2.zip解压缩为name2 \ AncestryDNA.txt,但需要为name2.txt。

我使用7-Zip 19.00解压缩文件。我解压缩了文件,因为我还需要从每个解压缩的文本文件中删除以“#”开头的行,以便在另一个程序中使用。

我从Windows批处理文件开始,在包含我的zip文件的Data目录中运行以下命令:

echo解压文件...

forfiles /p Data /m *.zip /c "cmd /c 7z x *.zip -o* -y"

echo将zip文件移至存储...

forfiles /p Data /m *.zip /c "cmd /c move @file ..\StorageZipFiles"

echo修剪AncestryDNA文本文件中除标题以外的所有内容...

forfiles /p Data /s /m *.txt /c "cmd /c sed -i '/#/d' @file"

这些工作正常,但我无法使用重命名功能。

我尝试在解压缩之前重命名文件...

forfiles /p Data /s /m *.zip /c "cmd /c 7z rn @file @fname\AncestryDNA.txt @fname\@fname.txt" 

和...

forfiles /p Data /s /m *.zip /c "cmd /c 7z a rn @file @fname\AncestryDNA.txt @fname\@fname.txt"

解压缩后...

forfiles /p Data /s /m *.txt /c "cmd /c ren @file @fname.txt" 

但是我无法成功地将文件夹的名称带到文件夹中的文本文件中。

解压缩后尝试重命名文件时,命令提示符不会产生错误消息。它将AncestryDNA.txt的旧文件名嵌套在文件夹name1,name2等中。

1 个答案:

答案 0 :(得分:0)

此powershell脚本是解压缩后重命名文件的另一种方法。

Get-ChildItem  -recurse -path Data *.txt | rename-item -path {$_.fullname} -newname  {$($_ | split-path | split-path -leaf ) + ".txt"} -whatif

这有两个交错的Powershell管道,一个管道获取所有正确的目录,第二个管道提取用于重命名文件的文件夹的名称。 请注意,出于安全考虑,我在此末尾添加了-whatif。如果输出看起来不错,则删除-whatif以实际更改文件名。仍然最好先在测试数据上对其进行测试,然后再用于真实数据。