【发布时间】:2018-07-16 20:50:06
【问题描述】:
我在目录中有各种名称如下所示的文件:
first_file_123456.jpg 5 * second_file_246531 (2).jpg我想做的是着手编写一个 PowerShell 脚本,该脚本可以获取这些文件并像这样重命名它们:
123456.jpg 246531 (2).jpg我希望去掉最后一个下划线和前面的所有文本以重命名我的文件,以便它们可以匹配我的企业资源规划系统中的项目编号。这个系统更老了(2004 年的技术),所以从那方面自动化已经过时了。
到目前为止,我尝试连接但似乎无法正常工作的内容如下:
Get-ChildItem -Recurse -filter *_* | `
Foreach-Object {
$oldName = $_.Name
$pos = $oldName.LastIndexOf("_")
$newName = $oldName.Substring($pos + 1)
if (Test-Path $newName) {
# This is where I get lost - if it runs into a duplicate file name
# how can I make the name unique
}
#write-host $_.fullname
write-host $oldName renamed To: $newName | Out-File renamelog.txt
#rename-item $_.FullName -NewName $newName
}
我注释掉了实际执行某些操作以查看输出的命令。
【问题讨论】:
-
您尝试过什么,您尝试过什么失败了?理想情况下,您应该提供一个minimal reproducible example 来说明您的尝试,并包含有关它如何失败的具体信息,以及错误消息和/或错误输出。 Stack Overflow 不是代码编写服务;最好的问题是那些提供有用信息的问题,以便回答的人可以指导您设计自己的正确答案。请参阅How to Ask 一个好问题。
-
话虽如此,我建议您注意
-splitoperator。 -
查看字符串“LastIndexOf”和子字符串