如果我们想在Win10系统众多文件中查找关键字,我们能使用Win10自带的搜索功能,但这样速度会很慢的,也无法对关键词进行高亮标注的,那么我们可以借助PowerShell来批量查找,更方便更快,具体怎么操作的,请看下文介绍。
操作方法
自制脚本查找关键字
笔者的QQ接收文件夹收到很多同事发来的工作文件(均为TXT格式的纯文本文件),现在需要在其中找出包含2021订货信息文本的文件。由于这些文件使用多种编码格式(ANSI、Unicode都有),为了避免在PowerShell中显示为乱码,需要先将PowerShell的编码格式设置为Unicode UTF-8。
展开控制面板的时钟和区域区域,点击更改日期、时间或数字格式。在打开的窗口中切换到管理选项卡,点击非Unicode程序的语言下的更改系统区域设置,在打开的窗口中勾选Beta版: 使用Unicode UTF-8提供全球语言支持(U),最后依次点击两次确定退出(图1)。

启动PowerShell后输入CD E:qq123456FileRecv并回车(输入每条命令后均需按下回车键确认,下同),进入QQ账号(123456)文件接收目录。接着再输入Select-String (Get-ChildItem | ?{$_.name -like *.txt}) -pattern $(Read-Host),表示在接收目录中遍历其中的TXT文件。最后再输入需要查找的关键字,如2021订货信息。
这样在PowerShell窗口中就会显示所有包含上述关键字的TXT文件,并提示关键字所在的行位置。比如17-hdz-xyxxr(1).txt:9:2021订货信息 广州2021.02.23,表示需要查询的关键字在17-hdz-xyxxr(1).txt文件中第9行的位置(图2)。

现在按照上述提示,使用记事本程序打开E:qq123456FileRecv17-hdz-xyxxr(1).txt,依次点击菜单栏中的格式去除自动换行前的勾选,继续点击查看勾选状态栏,现在就可以在记事本窗口下方的状态栏中看到显示的行号,按提示定位到第9行,即可看到查找的关键字了(图3)。

小提示:
利用上述命令,我们可以在指定的目录中快速找到所有包含关键字的文件,使用同样的方法可以查找日志文件(将*.txt更换为*.log即可)中的信息,比如可以使用QQ作为关键字,在审核日志中快速找到所有的QQ审核事件。
借助外力 使用开发脚本查找关键字
上述方法虽然简单,但由于很多朋友并不熟悉PowerShell的语法,因此对于一些更为复杂的查找,我们还可以直接使用现成的脚本。比如某电商将所有客户的发货信息均保存在E:发货下不同的.xlsx文件中并授权给特定的人员使用,现在需要在其中找到客户名为张三的所有发货信息。
首先以管理员身份启动PowerShell,输入并执行set-executionpolicy remotesigned命令,当屏幕出现选择提示时,输入a(表示确认安装所有脚本)确认(图4)。

接着在上述窗口中再输入并执行Install-Module -Name ImportExcel命令,此时Windows的安全中心会弹出拦截通知消息,按提示点击消息,在打开的保护历史记录窗口中,依次点击操作允许在设备上,允许安装脚本(图5)。

然后返回到PowerShell窗口,在屏幕提示是否安装时输入Y确认安装,这样可以将所需的脚本安装到本机的默认目录中(图6)。完成脚本的安装后到https://share.weiyun.com/EkERDO8t下载查询脚本1.psl并放置在桌面上,使用记事本打开后全选其中的内容,然后将其粘贴到PowerShell的窗口中并回车运行。

最后再输入查询命令get-deliveryinfo -user 张三 | ft,回车后就可以在窗口中显示查询结果。上述命令会在指定目录(即E:发货,如果需要查询其他目录或文件类型,如xls,请自行更改1.psl中相应的代码)下遍历所有的xlsx文件,并将符合要求的结果显示在屏幕上,我们可以直接复制查询结果(图7)。

小提示:
因为脚本服务器联机下载的速度较慢,如果在PowerShell窗口一直无法完成脚本的下载,大家还可以直接到https://www.powershellgallery.com/packages/ImportExcel,离线下载所需的脚本文件。下载到的是一个.nupkg文件,可以使用7-Zip打开,并将其解压到C:Program FilesWindowsPowerShellModules完成手动安装。
标签 win10教程