问:Powershell - 从文件中读取和报告特殊字符

时间:2015-08-27 18:11:14

标签: powershell

我有一个巨大的文件目录列表,我需要查看文件名中存在哪些特殊字符 - 特别是非标准字符,例如您使用ALT代码。

我可以通过以下方式轻松地将目录列表导出到文件中:

get-childitem -path D:\files\ -File -Recurse >output.txt

然而,我需要做的是拉出特殊字符,并且只提取文本文件中的特殊字符。我能想到的唯一方法是轻松量化所有东西"特殊" (因为该字符集中有很多可能性)将文本与我想要保留的字符列表进行比较,存储在连接变量(az,0-9等)中

我无法弄清楚如何取出好的"字符,只留下特殊字符。关于从哪里开始的任何想法?

2 个答案:

答案 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,您可以指定要搜索的正则表达式列表。