[问题] 批次修改,保留旧档名并新增编号

楼主: jackygrap (杰克葡萄)   2024-10-19 15:29:33
公司电脑有锁软件,无法用改名软件
因为文件上传有档名格式要求
小弟的需求是本来档名前8码编号保留,后面新增底线与编号。
上网找了一下文章,PoweShell指令自己尝试更改有稍微完成,但遇到困扰是档名保留了
,但编号没办法因为不同档名重新编号….
以下是改完后的,求大神出手
Get-ChildItem *.pdf | ForEach-Object -Begin {
$count = 1
} -Process {
Rename-Item $_ -NewName ($_.Name.Substring(0,8)+"_$count.pdf" -f $c++)
$count++
}
作者: falcon (falken)   2024-10-19 17:16:00
在字串中必须要用$()包含程式码,用来与一般字串区别,所以是"_$($count).pdf"。另外,为何会有 -f $c++?这看起来是多余的,没有任何可以代入的地方。顺便一提,不要把副档名写死比较好,如果会混合档案格式
作者: thomaschion (老汤)   2024-10-19 18:01:00
这种问题直接问copilot
作者: falcon (falken)   2024-10-19 18:05:00
Get-ChildItem -LiteralPath . -Filter *.pdf | ForEach-Object -Begin {$c = 0} -Proces {Rename-Item -LiteralPath $_.FullName (Join-Path $_.DirectoryName ($_.Name -replace '^(.{1,8}).*?(\.[^\.]+)?$', ('$1' + "_$c" + '$2'))); $c++}join-path 是多余的,不需要给完整的目标用完整路径只是为了避开一个bug,不过为此 -LiteralPath .也应该要改成 -LiteralPath $PWD.Path$suffix=''; while(Test-path -LiteralPath ($newPath =Join-Path $_.DirectoryName ($baseName+$suffix+$extension))){$suffix = "_$c" -f c++}; Rename-Item $_ $newPath产生新路径的地方大概改成这样,至于把档名拆成basename与副档名的方法可以参考我上面用的正规表示法,因为5.1的split-path不支援分拆出basenamehttps://i.imgur.com/DkCaj7k.jpeg你可以参考这个函式这里借用了.net 的 IO.Path 物件还有按照你的需求,不同档案要重新计数,你不应该把初始值写在 -Begin {} 中,因为它管道中只会执行一次,也就是只有第一个档案之前会执行到应该在 -Process { } 中最上方
作者: hunandy14 (Charlott.HonG)   2024-10-20 12:24:00
就你的范例原本的编号如果是有效的 可以考虑直接沿用
作者: falcon (falken)   2024-10-20 13:45:00
我觉得还是不要用Windows PowerShell 5.1吧要避开太多奇怪的问题了https://i.imgur.com/jI3VtTD.png左边是内建的5.1,右边是最新的跨平台版真的要用你就照h大的说法取原本括号内的编号来用就好用正规表示法选取字串,如果来源档名保证规律用分割法即可https://i.imgur.com/yx8iZwZ.png参考图片就好,16f推文有个地方错了档名都规律的话 '^(.*?)\((\d+)\)(\.[^\.]+)$' 就可以了
作者: hunandy14 (Charlott.HonG)   2024-10-21 15:44:00
没有括号的家伙一定对应到1吗成立的话那家伙特别处理,括号的数字直接继承,会比较省事ㄅ
作者: allen65535 (剧情急转直下)   2024-10-21 15:59:00
ReNamer有免安装版啊
作者: falcon (falken)   2024-10-21 17:15:00
有些免安装程式也会在系统留下使用痕迹这就要看楼主公司怎么怎么规定了我也是推ReNamer,但没有深色主题用起来不够舒服…另外,你的问题可以用-match与if-else个别处理https://zh.m.wikipedia.org/zh-tw/regex
作者: hunandy14 (Charlott.HonG)   2024-10-21 21:46:00
我猜大概是选一团档案F2 后来又想改结果回不去了XD
作者: Arbin (路人_Lv菜逼八)   2024-10-22 21:04:00
安装免安装都挡却没挡PowerShell 这IT不及格吧(欸
作者: hunandy14 (Charlott.HonG)   2024-10-23 12:45:00

Links booklink

Contact Us: admin [ a t ] ucptt.com