regex - 如何使用 powershell 从我的文件名中删除多余的空格?

标签 regex windows powershell directory filenames

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

Dir | Rename-Item -NewName { $_.Name -replace "()"," "}

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

的文件

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

V i d e o G a m e () [.zip

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

How To Craft.zip

Video Game.zip

一般而言,我对使用正则表达式和 Power Shell 还是个新手。如果有人可以帮助我使用命令删除单词之间的双倍间距、字母之间的单倍间距和任何字符实例 ( 以及 ( 之后的所有文本,它将解决我所有的问题。

最佳答案

您可以使用 \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"
}

关于regex - 如何使用 powershell 从我的文件名中删除多余的空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31372354/

相关文章:

regex - 如何通过扩展名过滤带有正则表达式的文件但排除某些文件?

regex - 让 sed 对变量而不是标准输入或文件进行操作

powershell - 单个构建步骤的 TeamCity 构建日志

sql - 仅当字符串以数字值开头时才选择字符串的数字部分

c# - 使用正则表达式验证 SQL 查询

c++ - 卡在 api getdrivetype

windows - 查找应用程序使用的 TCP 端口

c - 服务器不接收来自客户端的数据

带有 Robocopy 和参数传递的 Powershell

string - 如何将目录对象转换为字符串 - Powershell