我需要帮助,将下划线前的文件名替换为空。
例如:ABC_123.xls
我希望将其重命名为123.xls
和。CAB_234.xls
234.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 以使其成为现实。