使用Windows PowerShell删除文件名开头的随机字符串

8qgya5xd  于 2023-04-22  发布在  Windows
关注(0)|答案(1)|浏览(206)

我有几百个文件,我想重命名
所有文件名的开头都有随机字符串,但都有一个常量(在本例中为单词“File”)
那我该怎么从这个

huhukifauduigui9983hodhohhh File 01 [145dde].ext
ljdwidnjncjbbbjbk File 55 [wniw].ext
wdwjbnkjbkjbiuiuiubi File 24 [wdwxxx].ext
plxwjijiwi File 14 [wddbb].ext

到这个

File 01 [145dde].ext
File 55 [wniw].ext
File 24 [wdwxxx].ext
File 14 [wddbb].ext

先谢谢你了
我唯一能想到的是一个PowerShell命令,但只真正知道如何替换特定的字符串

nnsrf1az

nnsrf1az1#

使用-replace,PowerShell基于regex的字符串替换运算符:

Get-ChildItem -Filter *.ext |
  Rename-Item -NewName { $_.Name -replace '^.*\b(?=File)' } -WhatIf

注意:上面命令中的-WhatIf公共参数 * 预览 * 操作。删除-WhatIf,并在确定操作将按您的要求执行后重新执行。
正则表达式^.*\b(?=File)匹配文件名(^)的 * 开始 * 处的任何(*)个字符(.)(可能没有),但不包括(由于使用了先行Assert(?=…))单词File,它必须出现在单词边界(\b)处。
有关正则表达式的更详细解释和使用它的能力,请参阅this regex101.com page
由于没有给出替换操作数,因此隐含了 * 空字符串 *,从而有效地删除了匹配部分。
请注意,如果给定文件的名称与模式不匹配,则其名称将保持原样。
还要注意使用带有Rename-Item-NewName参数的延迟绑定脚本块,以便根据Get-ChildItem发出的每个文件信息对象 * 动态地 * 确定新文件名

相关问题