如何将带有特殊字符的文件名转换为有效的文件名?

l--*_*''' 3 powershell recursion sharepoint filenames file

我想知道是否可以在powershell中从整个目录结构中的所有文件中递归删除特殊字符?

例如,如果我有一个名为:

my presentation (fix).xlsx
Run Code Online (Sandbox Code Playgroud)

我想将其重命名为:

my presentation fix.xlsx
Run Code Online (Sandbox Code Playgroud)

谢谢你的指导。

我们需要这样做的原因是我们正在将许多文件迁移到 sharepoint 2010 并且 sharepoint 不喜欢带有特殊字符的文件!

bub*_*bba 6

我还没有测试过这段代码,但我想你可能想要类似的东西:

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"
Run Code Online (Sandbox Code Playgroud)

有效地,只需循环遍历目录(将函数修改为递归),然后替换任何不合适的(修改正则表达式以获得适当的内容)字符并用替换它们(有效地将它们去除