【问题标题】:Is there a command that would allow me to rename a directory only if it had a certain amount of digits together?有没有一个命令可以让我重命名一个只有一定数量的数字的目录?
【发布时间】:2021-07-18 01:10:50
【问题描述】:

我有一个目录,其中包含许多子目录。基本上,我想知道是否有一种方法可以删除文件夹中的所有单词,而只保留文件夹名称中的数字,这些数字以一系列 6 的形式排列在一起。

例如:

之前的文件夹名->示例1 123456

之后的文件夹名 -> 123456

我能够使用过滤器使用 powershell 删除空格、字符和单个数字。看起来像这样。

这在我前一阵子尝试时不起作用,因为当我尝试删除单个数字时,它会留下空白文件夹或只有一个数字的文件夹。我想知道是否有人会足够亲切地帮助我,如果我想学习,朝着正确的方向前进会很棒。

谢谢!

while($true){
$ErrorActionPreference = 'SilentlyContinue'
Write-Host "Renaming Directories in Job CLoud to Delete the Letters and Unwanted Characters, Please do not disrupt this service..."
cd -Path "C:\Users\run\Desktop\testing"
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "a","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "b","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "c","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "d","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "e","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "f","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "g","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "h","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "i","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "j","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "k","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "l","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "m","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "n","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "o","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "p","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "q","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "r","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "s","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "t","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "u","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "v","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "w","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "x","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "y","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "z","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "A","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "B","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "C","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "D","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "E","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "F","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "G","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "H","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "I","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "J","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "K","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "L","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "M","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "N","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "O","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "P","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "Q","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "R","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "S","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "T","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "U","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "V","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "W","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "X","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "Y","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "Z","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "!","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "/","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "$","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "-","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "'","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "_","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "t","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "T","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "t ","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "T ","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace " t","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace " T","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "# ","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace " #","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace "#","") + $_.Extension }
Get-Item *| Rename-Item -NewName { $($_.BaseName -replace " ","") + $_.Extension }


}```


 

【问题讨论】:

    标签: powershell rename


    【解决方案1】:

    这将检查 'C:\TestFolder' 子文件夹的 6 位数名称,如果匹配,则将文件夹重命名为这 6 位数(使用 -match 运算符时包含在自动变量 $Matches 中)

    Get-ChildItem -Path 'C:\TestFolder' -Directory | 
        Where-Object { $_.Name -match '\d{6}' } | 
        Rename-Item -NewName { $Matches.Values[0] } -WhatIf
    

    【讨论】:

      【解决方案2】:

      如果我理解正确,您可以使用正则表达式来匹配六个连续数字的模式,而不是尝试一次处理每个非数字字符。

      例如

      $Values = @('a123456', 'a 123412', '21 413 512312')
      
      $Values | ForEach-Object {
          if($_ -match '\d{6}'){
              $Matches[0]
          }
      }
      

      $Matches 自动存储 -match 的结果。

      \d{6} 表示六个连续的数字。

      找到匹配项后,您需要做的就是处理找不到六位数时发生的情况,然后重命名项目。

      【讨论】:

        猜你喜欢
        • 2018-01-26
        • 1970-01-01
        • 2011-12-11
        • 1970-01-01
        • 1970-01-01
        • 2020-06-14
        • 2015-08-11
        • 2022-01-18
        • 2023-03-14
        相关资源
        最近更新 更多