如何在Windows 8.1中删除一批文件的部分文件名?

如何在Windows 8.1中删除一批文件的部分文件名?

我的文件夹中有很多文件,但它们都以一行数字开头,并且与实际文件名之间以“_”分隔

例如:

123123123_文件名.txt

456456456_文件名2.txt

789789789_文件名3.txt

我想您可以运行某种命令,以便它删除“_”之前的字符和“_”本身。

任何帮助是极大的赞赏!

答案1

如果您对 PowerShell 不熟悉,您可能需要查看以下免费实用程序: http://www.bulkrenameutility.co.uk/Download.php

答案2

如果您只是想删除列表中的字符,则可以将以下内容放入批处理文件中,用相关目录代替dirname

for /f "tokens=2 delims=_" %%G in ('dir /b dirname') do @echo %%G

生成dir /b一个裸格式的目录列表(没有标题信息或摘要)。 表示delims=_应使用下划线作为分隔符,tokens=2表示您想要下划线后面的内容。请参阅为/FFOR /F以获得有关如何在批处理文件中使用的更详细说明。

但是,如果您想重命名不带数字和下划线的文件,在您的示例中,您有两个文件,filename2.txt如果去掉数字和下划线,则会产生名称。在这种情况下,您想做什么?或者您打算对第三个文件使用 filename3.txt?

如果下划线后面的内容是唯一的名称,则可以使用以下内容重命名文件,将相应的目录替换为相关目录

set dirname="relevantdir"
for /f "tokens=1,2 delims=_" %%G in ('dir /b %dirname%') do rename %dirname%\%%G_%%H %%H

在上述情况下,第一个标记%%G是下划线之前的内容,第二个标记%%H是下划线之后的内容。我将它们重新组合在一起以进行重命名操作,并在它们前面加上目录,因为重命名命令使用语法RENAME [drive:][path]filename1 filename2

如果您不想看到每个重命名操作的发生,请将@echo off作为批处理文件中命令之前的第一行。set

答案3

powershell    
ls "*_*.txt" | %{mv -confirm:$false $_.name ($_.name).split("_")[1]}

在 Win8 上,powershell 应该是首选。

答案4

PowerShell:假设文件夹中的所有文件都需要重命名(如 OP 所暗示的):

$Folder = 'c:\path\to\folder'
gci $Folder | Rename-Item -NewName { $_.Name.Split('_')[-1] }

相关内容