【问题标题】:How can I remove extra whitespace from my file names using power shell?如何使用 powershell 从文件名中删除多余的空格?
【发布时间】:2015-10-01 01:36:53
【问题描述】:

当我运行此命令时不小心在文件名中添加了很多空格时,我试图删除文件名中的 ( 之后的所有内容

目录 |重命名项目 -NewName { $_.Name -replace "()","}

在电源外壳中。我想这与没有明确表示“()”字符不是某些表达式的一部分有关,我没有意识到这一点。我有一大堆文件的示例名称为

H o w T o C r a f t () [.zip

视频 () [.zip

每个字母之间有一个空格,每个单词之间有两个空格 我现在需要转换成

如何制作.zip

视频游戏.zip

一般来说,我在使用 regex 和 power shell 方面还是个新手。如果有人可以帮助我使用命令来删除单词之间的双倍间距、字母之间的单倍间距和任何字符实例(以及 a 之后的所有文本(它将解决我所有的问题。

【问题讨论】:

    标签: regex windows powershell directory filenames


    【解决方案1】:

    您可以使用\s 正则表达式空白字符类替换空格,Trim() 删除末尾的特殊字符并在每个单词后引入空格this brilliant regex pattern

    $Files = Get-ChildItem .\ -Name
    
    $CamelCasePattern = '([A-Z])([A-Z])([a-z])|([a-z])([A-Z])'
    $CamelCaseReplace = '$1$4 $2$3$5'
    
    foreach($FileName in $Files){
        # Get the files base name
        $basename = [System.IO.Path]::GetFileNameWithoutExtension($FileName)
    
        # Remember the extension
        $extension = $FileName.Substring($basename.Length)
    
        # Remove all whitespace
        $basename = $basename -ireplace '\s',''
        # Remove excess characters at the end
        $basename = $basename.TrimEnd('()[')
        # introduce space after each capitalized word
        $basename = $basename -creplace $CamelCasePattern,$CamelCaseReplace
    
        # return correct file name
        "$basename$extension"
    }
    

    【讨论】:

      【解决方案2】:

      您可以使用以下正则表达式替换来恢复文件名:

       (?! )|[()\[\]]+ [()\[\]]+(?=\.)|( )
      

      或者

      \s(?!\s)|[()\[\]]+\s+[()\[\]]+(?=\.)|(\s)
      

      替换为:$1

      请参阅demo 1demo 2

      所以,它现在看起来像

      Dir | Rename-Item -NewName { $_.Name -replace "\s(?!\s)|[()\[\]]+\s+[()\[\]]+(?=\.)|(\s)","$1"}
      

      【讨论】:

      • 这从我的文件中删除了所有空格,并没有删除后面的 ()[****。下一步是在任何大写字母之前添加一个空格。
      • 好吧,你实际上可以在每个大写字母前插入一个空格(用(?<=\p{Lu}) => 和space 作为替换)。
      猜你喜欢
      • 1970-01-01
      • 2014-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-22
      • 1970-01-01
      • 1970-01-01
      • 2012-09-22
      相关资源
      最近更新 更多