提问人:Marylink_27 提问时间:9/18/2023 更新时间:9/18/2023 访问量:41
在 POWERSHELL 中删除 JPG 名称的前缀,直到“_”符号
Delete Prefixes of JPG names till '_'-symbol in POWERSHELL
问:
日安!
我们有一个文件夹,其中包含许多以以下格式命名的JPG文件:“1_abcd_0000.jpg”,“12_defg_0001.jpg”,“123_ghij_0002.jpg”。
我需要剪切这些名称的第 1 部分,直到包含第 1 个拆分“_”符号。
我的代码是:
$DirRank=New-Object 'system.collections.generic.dictionary[string,int]' $mainfolder=“C:\用户” Get-ChildItem $mainfolder |%{Rename-Item $.fullname $.Name.Split(“_”)[1]} //这里有一个错误
以下是代码运行后的 2 个问题:
- 文件名剪切到最后一个拆分的“_”符号,而不是第一个;文件的新格式为“0001”、“0002”等;
- 由于名称重复,无法批量保存新文件。
请帮助更正代码以重命名文件。
谢谢!
$DirRank=New-Object 'system.collections.generic.dictionary[string,int]' $mainfolder=“C:\用户” Get-ChildItem $mainfolder |%{Rename-Item $.fullname $.Name.Split(“_”)[1]} //这里有一个错误
答:
1赞
lit
9/18/2023
#1
此正则表达式将所有内容重新调整到第一个 LOW LINE(下划线)。问号使它不贪婪。
$_.Name -replace '^.*?_(.*)','$1'
这不会解决文件名重复的问题。创建重复名称时,您的业务规则是什么?
评论
0赞
lit
9/18/2023
我明白这一点,答案中的代码将删除前缀。当这导致文件名已经存在时,需要发生什么?
0赞
Marylink_27
9/18/2023
我们用前缀批量重命名了照片。现在我们需要将照片加载到网络存储中,以通过唯一代码在照片上创建链接,没有 1-st 前缀(数字直到“_”符号)。主要思想是我们可以在将订单发送给客户之前检查当前商品的照片。主要问题是名称中的前缀 - 项目编号是唯一的,如果我们削减前缀,就不会有重复。
0赞
lit
9/18/2023
删除前缀是否有可能创建问题中指定的重复文件名?"New files can't be saved in bulk because of duplicates of names. "
0赞
Marylink_27
9/18/2023
我描述了我的代码的情况:我的版本删除了所有符号,直到最后一个低线,并将格式保存为最后一个计数器 0001、0002 等。
0赞
Marylink_27
9/18/2023
还有一个问题:如果我们也需要删除 LOW LINE,为什么 QUESTION SIGN 应该放在 LOW LINE 之前,而不是放在它之后?$_.名称 -replace '^.*_?(.*)','$1'
评论