如何重命名子文件夹或 zip 文件中的文本文件
How to rename text files within subfolders or zip files
我有多个具有唯一名称的 zip 文件夹,但文件夹中的文件都具有相同的名称。我需要重命名文本文件以匹配文件夹名称。我还需要将那些重命名的文本文件移动到工作目录。
比如我有以下的:
name1.zip 解压为 name1\AncestryDNA.txt 但需要为 name1.txt。
name2.zip 解压为 name2\AncestryDNA.txt 但需要为 name2.txt.
我使用 7-Zip 19.00 解压文件。我解压缩了这些文件,因为我还需要从每个解压缩的文本文件中删除以“#”开头的行,以便在另一个程序中使用。
我从一个 windows 批处理文件开始,它在包含我的 zip 文件的数据目录中运行以下命令:
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"
从 AncestryDNA 文本文件回显除 header 之外的所有内容...
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 等中
解压后重命名文件的另一种方法是这个 powershell 脚本。
Get-ChildItem -recurse -path Data *.txt | rename-item -path {$_.fullname} -newname {$($_ | split-path | split-path -leaf ) + ".txt"} -whatif
这有两个交错的 powershell 管道,一个获取所有正确的目录,第二个管道提取用于重命名文件的文件夹的名称。
请注意,为了安全起见,我在末尾放了一个 -whatif。如果输出看起来不错,则删除 -whatif 以实际更改文件名。在实际数据上使用之前,最好还是在测试数据上测试一下。
我有多个具有唯一名称的 zip 文件夹,但文件夹中的文件都具有相同的名称。我需要重命名文本文件以匹配文件夹名称。我还需要将那些重命名的文本文件移动到工作目录。
比如我有以下的:
name1.zip 解压为 name1\AncestryDNA.txt 但需要为 name1.txt。 name2.zip 解压为 name2\AncestryDNA.txt 但需要为 name2.txt.
我使用 7-Zip 19.00 解压文件。我解压缩了这些文件,因为我还需要从每个解压缩的文本文件中删除以“#”开头的行,以便在另一个程序中使用。
我从一个 windows 批处理文件开始,它在包含我的 zip 文件的数据目录中运行以下命令:
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"
从 AncestryDNA 文本文件回显除 header 之外的所有内容...
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 等中
解压后重命名文件的另一种方法是这个 powershell 脚本。
Get-ChildItem -recurse -path Data *.txt | rename-item -path {$_.fullname} -newname {$($_ | split-path | split-path -leaf ) + ".txt"} -whatif
这有两个交错的 powershell 管道,一个获取所有正确的目录,第二个管道提取用于重命名文件的文件夹的名称。 请注意,为了安全起见,我在末尾放了一个 -whatif。如果输出看起来不错,则删除 -whatif 以实际更改文件名。在实际数据上使用之前,最好还是在测试数据上测试一下。