我想知道是否可以在 powershell 中从整个目录结构中的所有文件中递归删除特殊字符?
例如,如果我有一个名为:
my presentation (fix).xlsx
我想把它重命名为:
my presentation fix.xlsx
感谢您的指导。
我们需要这样做的原因是我们正在将许多文件迁移到 sharepoint 2010 中,而 sharepoint 不喜欢带有特殊字符的文件!
最佳答案
我没有测试过这段代码,但我想你可能想要类似的东西:
Function Rename-Files($path)
{
Get-ChildItem -path $path |
Foreach-Object {
$newName = $_.name -replace '[^A-Za-z0-9-_ \.\[\]]', ''
if (-not ($_.name -eq $newname)){
Rename-Item -Path $_.fullname -newname ($newName)
}
}
} #end function
Rename-Files -path "C:\somepath"
实际上,只需遍历目录(将函数修改为递归),然后替换任何不适当的(修改正则表达式以获得适当的内容)字符并替换它们什么都没有(有效地去除它们)。
关于file - 如何将带有特殊字符的文件名转换为有效的文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15798031/