我有一个巨大的文件目录列表,我需要查看文件名中存在哪些特殊字符 - 特别是非标准字符,例如您使用ALT代码。
我可以通过以下方式轻松地将目录列表导出到文件中:
get-childitem -path D:\files\ -File -Recurse >output.txt
然而,我需要做的是拉出特殊字符,并且只提取文本文件中的特殊字符。我能想到的唯一方法是轻松量化所有东西"特殊" (因为该字符集中有很多可能性)将文本与我想要保留的字符列表进行比较,存储在连接变量(az,0-9等)中
我无法弄清楚如何取出好的"字符,只留下特殊字符。关于从哪里开始的任何想法?
答案 0 :(得分:2)
我采取"特别"字符是美国ASCII之外的任何字符。
这基本上意味着任何数字值为128或更高的字符,便于在Where-Object
过滤器中检查:
Get-ChildItem -File -Recurse |Where-Object {
$_.Name.ToCharArray() -gt 127
}
这将返回包含" special"的所有文件他们名字中的人物。
如果要根据文件提取特殊字符,请使用ForEach-Object
:
Get-ChildItem -File -Recurse |ForEach-Object {
if(($Specials = $_.Name.ToCharArray() -gt 127)){
New-Object psobject -Property @{File=$_.FullName;Specials=$(-join $Specials)}
}
}
答案 1 :(得分:0)
查看将结果传递给Select-String。使用Select-String,您可以指定要搜索的正则表达式列表。