首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用powershell按顺序重命名pdf文件

使用powershell按顺序重命名pdf文件
EN

Stack Overflow用户
提问于 2020-02-12 00:28:26
回答 2查看 234关注 0票数 0

我有大量的pdf需要按顺序重命名。这些文件最初被扫描到单个文档中,然后提取为单独的文件。解压后,文件名变为"444026-444050 1“、"444026-444050 2”等。我正在尝试重命名所有文件以匹配文档编号("444026-444050 1“将变为"444026")。

我找到了下面这行我可以在Powershell中使用的代码,但似乎任何超过9个文件的文件都有问题!一旦我尝试了10个文件,只有第一个文件被正确保存。其余的变得混乱(文件444027具有文件444035的内容,那么文件444028具有444027,并且444029具有444028,等等)

我想在循环中有一些问题,但是我很难修复它。

有人能帮帮忙吗?谢谢

代码语言:javascript
运行
复制
Dir *.pdf | ForEach-Object  -begin { $count=26 }  -process { rename-item $_ -NewName "4440$count.pdf"; $count++ }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-12 01:30:47

Dir (Get-ChildItem的别名)检索项目的顺序似乎没有得到严格的保证。此外,如果它在排序,它可能会将它们作为字符串进行排序,而"444026-444050 10“作为字符串出现在"444026-444050 2”之前。将SortObject插入到您的管道中并使用Split来获取您关心的序列号可能是值得的:

代码语言:javascript
运行
复制
Dir *.pdf | Sort-Object -Property {[int]$_.Name.Split()[1].Split(".")[0]} | ForEach-Object  -begin { $count=26 } -process { rename-item $_ -NewName "4440$count.pdf"; $count++ }

关键部分是在Dir之后和ForEach-Object之前插入的这个新的流水线阶段

代码语言:javascript
运行
复制
Sort-Object -Property {[int]$_.Name.Split()[1].Split(".")[0]}

这意味着要根据第一个空格和后续周期之间的内容对Dir的输出进行排序,将这些内容作为整数(而不是字符串)进行比较。这将确保您的结果是有序的,并且您将以数字顺序,而不是字典顺序来获取它们。

票数 1
EN

Stack Overflow用户

发布于 2020-02-12 03:20:17

好的。让我们看看这是否让每个人都高兴。也许您应该尝试使用文件的备份副本。

代码语言:javascript
运行
复制
# make some test files in a new folder
# 1..20 | foreach {
#   if (! (test-path "44026-44050 $_.pdf")) { 
#     echo "44026-44050 $_" > "44026-44050 $_.pdf" }
# }

# rename and pad the first 9 old filenames with a 0 before the last digit for sorting
# is it less than 100 files?
1..9 | foreach {
  ren "44026-44050 $_.pdf" "44026-44050 0$_.pdf" -whatif
}

# make dir complete first with parentheses for powershell 5
# pad $count to 2 digits
# take off the -whatif if it looks ok
(dir *.pdf) | foreach { $count = 1 } {
    $padded = $count | foreach tostring 00
    rename-item $_ -newname 4440$padded.pdf -whatif; $count++ }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60173398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档