如何在Windows中找到cmd中的非ascii字符?

时间:2017-03-23 16:06:23

标签: regex windows batch-file cmd

我有一个包含一些非ascii字符的大文件。我需要找出那些记录。注意:我无法使用Notepad ++等打开文件。

我在cmd尝试了类似的东西:> findstr / R / N“[^ \ x00- \ x7F]”Test.txt

但这会返回不包含非ascii字符的额外行

字符示例:

Test.txt contains:

 �      
asdf
sdf asd
1231 sdfg dfg

Result:
1: ∩┐╜  ►←→    ☼    --Expected row
3:sdf asd           --Unexpected row
4:1231 sdfg dfg     --Unexpected row

1 个答案:

答案 0 :(得分:0)

试试这个

set "F=1.txt" & echo var r=0,c=0,l,s=(new ActiveXObject("Scripting.FileSystemObject")).OpenTextFile(WScript.Arguments(0),1);while(!s.AtEndOfStream){++c;if(/[^^\r\n\x20-\x7f]/.test(l=s.ReadLine())){r=1;WScript.Echo(c+": "+l);}}s.Close();WScript.Quit(r);>"%TEMP%\1.js" & (call cscript /nologo "%TEMP%\1.js" "%F%") & del "%TEMP%\1.js" & set "F="

set "F=1.txt"是要测试的文件。

echo ... >"%TEMP%\1.js"创建一个JScript文件,该文件将读取%F%并测试其是否包含/[^\r\n\x20-\x7f]/符号。

cscript启动创建的脚本。

del "%TEMP%\1.js" & set "F="是一个清理工作。