平淡
笔者的QQ接收文件夹收到很多同事发来的工作文件(均为TXT格式的纯文本文件),现在需要在其中找出包含“2021订货信息”文本的文件。由于这些文件使用多种编码格式(ANSI、Unicode都有),为了避免在PowerShell中显示为乱码,需要先将PowerShell的编码格式设置为“Unicode UTF-8”。
展开控制面板的“时钟和区域→区域”,点击“更改日期、时间或数字格式”。在打开的窗口中切换到“管理”选项卡,点击“非Uni code程序的语言”下的“更改系统区域设置”,在打开的窗口中勾选“Beta版: 使用Unicode UTF-8提供全球语言支持(U)”,最后依次点击两次“确定”退出(图1)。
启动Power Shell后输入“CD E:\ q q123456\FileRecv”并回车(输入每条命令后均需按下回车键确认,下同),进入QQ账号(123456)文件接收目录。接着再输入“Select-String (Get-ChildItem | ?{$_.name -like "*.txt"}) -pattern "$(Read-Host)"”,表示在接收目录中遍历其中的TXT文件。最后再输入需要查找的关键字,如“2021订货信息”。
这样在Power Shell窗口中就会显示所有包含上述关键字的TXT文件,并提示关键字所在的行位置。比如“17-hdz-xyxxr(1).t x t:9:2021订货信息 广州2021.02.23”,表示需要查询的关键字在“17-hdzxyxxr(1).txt”文件中第9行的位置(图2)。
现在按照上述提示,使用记事本程序打开“E: \qq123456\FileRecv\17-hdz-xyx xr(1).t xt”,依次点击菜单栏中的“格式→去除自动换行前的勾选”,继续点击“查看→勾选状态栏”,现在就可以在记事本窗口下方的状态栏中看到显示的行号,按提示定位到第9行,即可看到查找的关键字了(图3)。
上述方法虽然简单,但由于很多朋友并不熟悉Power Shell的语法,因此对于一些更为复杂的查找,我们还可以直接使用现成的脚本。比如某电商将所有客户的发货信息均保存在“E:\发货”下不同的.xlsx文件中并授权给特定的人员使用,现在需要在其中找到客户名为“张三”的所有发货信息。
首先以管理员身份启动PowerShell,输入并执行“set-executionpolicy remotesigned”命令,当屏幕出现选择提示时,输入“a”(表示确认安装所有脚本)确认(图4)。
接着在上述窗口中再输入并执行“Install-Module -Name ImportExcel”命令,此时Windows的安全中心会弹出拦截通知消息,按提示点击消息,在打开的“保护历史记录”窗口中,依次点击“操作→允许在设备上”,允许安装脚本(图5)。
然后返回到PowerShell窗口,在屏幕提示是否安装时输入“Y”确认安装,这样可以将所需的脚本安装到本机的默认目录中(图6)。完成脚本的安装后到“ht tps://share.weiyun.com/EkERDO8t”下载查询脚本“1.psl”并放置在桌面上,使用记事本打开后全选其中的内容,然后将其粘贴到PowerShell的窗口中并回车运行。
最后再输入查询命令“getdeliveryinfo-user "张三" | f t”,回车后就可以在窗口中显示查询结果。上述命令会在指定目录(即“E:\ 发货”,如果需要查询其他目录或文件类型,如xl s,请自行更改“1.psl”中相应的代码)下遍历所有的xlsx文件,并将符合要求的结果显示在屏幕上,我们可以直接复制查询结果(图7)。