【问题标题】:Powershell renaming files containing repeating pattern (that has to be removed for the first occurrence)Powershell重命名包含重复模式的文件(必须在第一次出现时删除)
【发布时间】:2013-07-03 11:54:17
【问题描述】:

我想重命名一堆包含可以在文件名中重复的模式的文件。 Pattern 从第一个“点+空格”开始删除它的所有内容。 例如:“wxxdv xcvxcv.sdfsdf.sd.txt”变为“sdfsdf.sd.txt”(删除由"dot + space" = ". "终止的“wxxdv xcvxcv.”的第一次出现) 例如:“rond M., Bilou.arrival 1901.txt”应该变成“arrival 1901.txt”(删除“rond M., Bilou.”)

我发现以下命令不应该离我的目标太远(但不起作用):

dir *.txt | mi -dest {($_.Basename -replace '^[A-z]+\.\s','').Trim() + $_.Extension}

额外的问题,有没有办法在不执行重命名的情况下查看结果(结果的一种预览)

谢谢,这是我第一次尝试使用powershell

【问题讨论】:

    标签: powershell pattern-matching rename


    【解决方案1】:
    $t="rond M., Bilou. arrival 1901.txt"
    $formatedText=$t.Substring(([regex]::split($t, '\.\s')[0]).Length+2)
    write-host $formatedText
    
    arrival 1901.txt
    

    【讨论】:

    • 感谢您的回答 Kayasax,但我无法通过管道传输您的命令来处理所有文件...是这样的吗:dir *.pdf | mi -dest {($_.Basename.Substring(([regex]::split($t, '\.\s')[0]).Length+2)) + $_.Extension}
    • 我会说 ` mi -dest {($_.Basename.Substring(([regex]::split($_.basename, '\.\s')[0]).Length +2)) + $_.Extension`
    【解决方案2】:

    我的奖励问题的答案

    有什么方法可以在不执行重命名的情况下查看结果

    是使用Move-Item命令(mi)的“-WhatIf”开关,所以命令为:

    dir *.pdf | mi -WhatIf -dest {($_.Basename.Substring(([regex]::split($_.basename, '\.\s')[0]).Length+2)) + $_.Extension}
    

    【讨论】:

      猜你喜欢
      • 2014-12-14
      • 2022-11-22
      • 2014-08-15
      • 2016-09-10
      • 2017-08-18
      • 1970-01-01
      • 2021-09-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多