使用 powershell 替换下划线_之前的文件名

使用 powershell 替换下划线_之前的文件名

我需要帮助,将下划线前的文件名替换为空。

例如:ABC_123.xls我希望将其重命名为123.xls和。CAB_234.xls234.xls

答案1

根据我的评论,这实际上是一行代码就可以完成这项任务。

您必须提交代码(展示您的努力)才能有人愿意帮助您,但我将其放在这里作为起点,以便您朝着正确的方向前进。许多 Youtube 视频向您展示了如何做到这一点以及更多。在 Youtube 上搜索“PowerShell 入门”或“PowerShell 文件和文件夹管理”。

基本/简单的字符串替换:

# Replace the start of a string up to and including the underscore. https://regex101.com
'ABC_123.xls', 'CAB_234.xls' -replace '.*_'
# Results
<#
123.xls
234.xls
#>

创建测试文件:

'ABC_123.xls', 'CAB_234.xls' | 
ForEach-Object {New-Item -Path 'D:\Temp' -Name $PSItem -ItemType File}
# Results
<#
    Directory: D:\Temp


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----         11-Oct-22     18:14              0 ABC_123.xls
-a----         11-Oct-22     18:14              0 CAB_234.xls
#>

按全名获取文件列表并更改它:

(Get-ChildItem -Path 'D:\Temp' -Filter '*.xls').FullName | 
ForEach-Object { Rename-Item -Path $PSItem -NewName ($PSItem -replace '.*_') -WhatIf}
# Results
<#
What if: Performing the operation "Rename File" on target "Item: D:\Temp\ABC_123.xls Destination: D:\Temp\123.xls".
What if: Performing the operation "Rename File" on target "Item: D:\Temp\CAB_234.xls Destination: D:\Temp\234.xls".
#>

删除 WhatIf 以使其成为现实。

相关内容