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