我试图将一堆文件从 Windows 目录移动到共享点,需要重命名目标文件系统上不允许的文件和目录名称。
我在这里找到的大部分任务都需要完成: Replace all # in filenames through subfolders in Windows
Get-ChildItem -Filter "*`#*" -Recurse |
Rename-Item -NewName {$_.name -replace '#','No.' } -Verbose
Run Code Online (Sandbox Code Playgroud)
evilSnobu 提供的解决方案对这些字符 ~、#、% 和
sharepoint 上不允许的其他字符应该是:+、*、{、}、\、:、<、>、?、/、|、“
我不确定首先在源 Windows 文件系统上允许哪些文件,但是“+”是并且显然很多文件名都包含该字符。
对于那些我从 PowerShell 收到一个错误,说它使正则表达式无效。不幸的是,这对于使用字符或用等效的 ascii 代码对其进行转义是正确的。
Get-ChildItem -Filter "*`+*" -Recurse |
>> Rename-Item -NewName {$_.name -replace '+','_' } -Verbose
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不起作用。关于如何处理这些的任何想法?
谢谢蒂姆
我目前清理文件名/路径的方法是这样做:
$Path.Split([IO.Path]::GetInvalidFileNameChars()) -join '_'
Run Code Online (Sandbox Code Playgroud)
这将 .NET 函数用于当前操作系统的无效字符(因为 .NET 现在不仅仅在 Windows 上运行)。它将用_.
| 归档时间: |
|
| 查看次数: |
4612 次 |
| 最近记录: |