批量移动序列号(后缀)- 图像、JPEG、RAW 等
Bulk Move Sequential Numbers (Suffix) - Images, JPEG, RAW etc
我需要移动序号或有时是带有字母的随机 ID。
举个例子:
Australia_Brisbane_NP_©_Hello_World_1163
Australia_Brisbane_NP_©_Hello_World_1164
Australia_Brisbane_NP_©_Hello_World_1165
Australia_Brisbane_NP_©_Hello_World_AHDFGF
Australia_Brisbane_NP_©_Hello_World_GHRADQ
Australia_Brisbane_NP_©_Hello_World_QGASFS
我需要做的是在末尾添加 ©_Hello_World
并将 ID 移到 ©
后面,示例如下:
Australia_Brisbane_NP_1165_©_Hello_World
Australia_Brisbane_NP_AHDFGF_©_Hello_World
理想的脚本允许我在不影响扩展名的情况下在单词末尾指定 1-15 个字符,并将 1-15 个字符移到 _©
后面。
我已经尝试搜索很多不同的脚本,但是它们要么不起作用,要么太复杂,我无法根据需要调整它们。
我无法使用任何外部软件,因此我必须坚持使用 PowerShell。
基本 "change filename" 脚本是:
- 获取文件名
Get-ChildItem -LiteralPath 'C:\Path\To\Files'
- 将结果输入
Rename-Item
- 将 属性
-NewName
与脚本块一起使用 {}
- 在脚本块中,根据旧名称计算新名称的代码
- 从路径和扩展名中提取文件名
- 改变它
- 重新打开路径和扩展名
I have tried searching for a lot of different scripts however either they do not work or they are too complicated for me to adapt them to what is required.
文本处理都是关于细节的,细节使代码更复杂,小细节会使整个方法失效。
我完全不清楚你为什么说:
The ideal script would allow me to specify between 1-15 characters at the end of the word without effecting the extension and move the 1-15 characters behind _©.
为什么您会受益于指定字符数,而不是让理想的脚本移动 "all of them"?
这个脚本应该可以做到:
$count = Read-Host -Prompt 'How many characters to move?'
Get-ChildItem -LiteralPath 'C:\Path\To\Files' |
Rename-Item -NewName {
$newName = $_.BaseName -replace "(©_Hello_World)_(.{$($count)})", '_'
"$($_.DirectoryName)/$($newName + $_.Extension)"
}
铌。它会移动您要求的计数,即使那里有更多字符。
如果不需要指定计数,只取全部到扩展名,则将(.{$($count)})
替换为(.*)
,并删除Read-Host
行。
我需要移动序号或有时是带有字母的随机 ID。
举个例子:
Australia_Brisbane_NP_©_Hello_World_1163 Australia_Brisbane_NP_©_Hello_World_1164 Australia_Brisbane_NP_©_Hello_World_1165 Australia_Brisbane_NP_©_Hello_World_AHDFGF Australia_Brisbane_NP_©_Hello_World_GHRADQ Australia_Brisbane_NP_©_Hello_World_QGASFS
我需要做的是在末尾添加 ©_Hello_World
并将 ID 移到 ©
后面,示例如下:
Australia_Brisbane_NP_1165_©_Hello_World Australia_Brisbane_NP_AHDFGF_©_Hello_World
理想的脚本允许我在不影响扩展名的情况下在单词末尾指定 1-15 个字符,并将 1-15 个字符移到 _©
后面。
我已经尝试搜索很多不同的脚本,但是它们要么不起作用,要么太复杂,我无法根据需要调整它们。
我无法使用任何外部软件,因此我必须坚持使用 PowerShell。
基本 "change filename" 脚本是:
- 获取文件名
Get-ChildItem -LiteralPath 'C:\Path\To\Files'
- 将结果输入
Rename-Item
- 将 属性
-NewName
与脚本块一起使用{}
- 在脚本块中,根据旧名称计算新名称的代码
- 从路径和扩展名中提取文件名
- 改变它
- 重新打开路径和扩展名
I have tried searching for a lot of different scripts however either they do not work or they are too complicated for me to adapt them to what is required.
文本处理都是关于细节的,细节使代码更复杂,小细节会使整个方法失效。
我完全不清楚你为什么说:
The ideal script would allow me to specify between 1-15 characters at the end of the word without effecting the extension and move the 1-15 characters behind _©.
为什么您会受益于指定字符数,而不是让理想的脚本移动 "all of them"?
这个脚本应该可以做到:
$count = Read-Host -Prompt 'How many characters to move?'
Get-ChildItem -LiteralPath 'C:\Path\To\Files' |
Rename-Item -NewName {
$newName = $_.BaseName -replace "(©_Hello_World)_(.{$($count)})", '_'
"$($_.DirectoryName)/$($newName + $_.Extension)"
}
铌。它会移动您要求的计数,即使那里有更多字符。
如果不需要指定计数,只取全部到扩展名,则将(.{$($count)})
替换为(.*)
,并删除Read-Host
行。