gpt4 book ai didi

regex - 在Windows Powershell中替换文件名中的特殊字符

转载 作者:行者123 更新时间:2023-12-01 11:16:30 25 4
gpt4 key购买 nike

我试图将一堆文件从Windows目录移动到共享点,需要重命名目标文件系统上不允许的文件名和目录名。

我要做在这里找到的任务所需的大部分内容:
Replacing all # in filenames throughout subfolders in Windows

Get-ChildItem -Filter "*`#*" -Recurse |
Rename-Item -NewName {$_.name -replace '#','No.' } -Verbose

evilSnobu提供的解决方案对于这些字符〜,#,%和&

共享点上不允许的其他字符应该是:+,*,{,},\,:,<,>,?,/,|,“

我不确定是否首先在源Windows文件系统上允许使用哪些文件,但是“+”显然是很多文件名中都包含该字符的文件名。

对于那些我从PowerShell中得到一个错误,说它使正则表达式无效。不幸的是,这对于使用字符或用等效的ascii代码对其进行屏蔽是正确的。
Get-ChildItem -Filter "*`+*" -Recurse |
>> Rename-Item -NewName {$_.name -replace '+','_' } -Verbose

不幸的是,这不起作用。关于如何处理这些想法?

谢谢蒂姆

最佳答案

在您不确定的列表中,除+{}之外,所有这些都被禁止。要转义正则表达式中的字符,请使用\,例如,由于$是字符串结尾 anchor 正则表达式,请使用\$匹配文字$。或者,可以考虑使用$name -replace '+','_'而不是$name.replace("+","_"),它不使用regexp。

关于regex - 在Windows Powershell中替换文件名中的特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50277977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com