我的最终目标是在 Windows 服务器上设置一个脚本,该脚本将查找给定文件夹中包含不可打印、非 ASCII 字符的任何文件,并将这些文件移动到另一个文件夹。
为了找到文件,我想我可以使用类似这样的方法,但它不起作用:
findstr /m /r /c:"[^\x20-\x7e\r\n]" *.txt
为了简化问题,假设我有两个文本文件,1.txt 和 2.txt,分别包含“abcdefg”和“defghijk”。此命令将按预期在输出中返回“2.txt”:
findstr /m /r /c:"[^a-g]" *.txt
但是,用十六进制代码 \x61 和 \x67 替换“a”和“g”会失败,并且没有输出:
findstr /m /r /c:"[^\x61-\x67]" *.txt
似乎您无法使用 findstr 实用程序在字符类中使用十六进制值。我还能怎样实现我的目标?是否可以使用 Windows 批处理脚本来实现?