我的文件夹中有很多文件,但它们都以一行数字开头,并且与实际文件名之间以“_”分隔
例如:
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] }