我能够找到如何GetInvalidFileNameChars()在PowerShell脚本中使用该方法.但是,它似乎也过滤掉了空白(这是我不想要的).
编辑:也许我不是很清楚地问这个问题.我希望下面的函数包含文件名中已存在的空格.目前,脚本过滤掉空格.
Function Remove-InvalidFileNameChars {
param([Parameter(Mandatory=$true,
Position=0,
ValueFromPipeline=$true,
ValueFromPipelineByPropertyName=$true)]
[String]$Name
)
return [RegEx]::Replace($Name, "[{0}]" -f ([RegEx]::Escape([String][System.IO.Path]::GetInvalidFileNameChars())), '')}
Run Code Online (Sandbox Code Playgroud) 将大约 200,000 个文件迁移到 OneDrive for Business,发现有一些他们不喜欢的字符 - 最大的罪犯是#。我有大约 3,000 个带有哈希值的文件,我想将它们全部替换为No.. 例如,旧:File#3.txt新:File No.3.txt
我尝试使用 PowerShell 脚本,但它都不喜欢#:
Get-ChildItem -Filter "*#*" -Recurse |
Rename-Item -NewName { $_.name -replace '#',' No. ' }
Run Code Online (Sandbox Code Playgroud)
我在弄清楚保留字符的语法方面运气不佳 - 我尝试过\#,,,,#\但'*#*'没有运气。
任何人都可以阐明这一点或提供一种快速方法来递归替换所有这些哈希标签吗?
谢谢。