想在命令行里用Everything搜索文件?关键在于它的命令行工具es.exe。配置好PATH后,通过-s参数启动搜索,用-path控制输出格式,还能嵌入批处理和PowerShell脚本实现自动化。

习惯了图形界面点点鼠标?其实,Everything的命令行工具es.exe才是高效玩家的秘密武器。它能让你不打开主窗口,直接在命令行或脚本中完成搜索、筛选和文件处理,把文件查找彻底自动化。下面就来拆解具体用法。
一、确认es.exe路径并配置环境变量
工欲善其事,必先利其器。首先得找到es.exe,它通常就躺在Everything的主程序安装目录里,比如C:\Program Files\Everything\es.exe。为了能在任何命令行窗口里直接调用它,最省事的办法就是把它加到系统的PATH环境变量里。
具体操作分四步:打开Everything的安装目录,确认es.exe文件存在;然后右键点击“此电脑”,进入“属性”→“高级系统设置”→“环境变量”;接着,在“系统变量”区域找到Path,编辑它,把Everything的安装目录完整路径添加进去;最后,重新开一个命令提示符窗口,输入es.exe -version回车,如果能看到版本号信息,恭喜,配置成功了。
二、基础搜索语法与常用参数
配置好环境,接下来就是核心的搜索命令了。es.exe的查询能力很强大,支持类SQL的表达式,所有操作都通过命令行参数驱动。最基本的参数是-s,意思是search,后面紧跟你要找的关键词。
举几个例子就明白了:想找所有文件名里带“report”的文件,命令就是es.exe -s report;如果需要精确匹配一个叫“invoice.pdf”的文件,记得给文件名加上引号:es.exe -s "invoice.pdf";当然,也可以限定搜索范围,比如只在D盘的Projects文件夹里找日志文件:es.exe -s "D:\Projects\*.log";更复杂的组合查询也没问题,像查找2024年以后修改过的所有PDF文件:es.exe -s "ext:pdf date-modified:2024-01-01.."。
三、输出格式控制与重定向保存
默认情况下,搜索结果会一行行地在控制台显示。但对于脚本处理来说,我们往往需要更结构化的输出。这时,es.exe的其他参数就派上用场了。
比如,可以用es.exe -s "docx" -i -siz -tab命令,它除了列出文件,还会用制表符分隔地显示文件大小等信息;如果只关心文件的具体位置,es.exe -s "config.ini" -path参数能让你只得到纯净的完整路径;想把结果存下来分析?简单,用重定向符号就能保存为UTF-8编码的CSV文件:es.exe -s "*.tmp" -csv > temp_files.csv;最后,如果搜索结果太多,记得用es.exe -s "backup" -limit 50来限制一下返回数量,避免脚本被海量数据“冲垮”。
四、在批处理脚本中调用es.exe实现自动化
这才是es.exe发挥威力的地方。把它写进Windows批处理脚本(.bat),很多重复性的文件管理工作就能自动完成了。
设想一个场景:定期扫描可能包含密码的文本文件。你可以创建一个find_sensitive.bat,里面写入:@echo off & es.exe -s "password|passwd|pwd" -ext:txt -path > sensitive_list.txt,运行后结果直接存到文本里。想先知道有多少个文件?可以这样:for /f %%i in ('es.exe -s "conf" -count') do echo Found %%i files。更进一步,对搜到的每一个文件执行操作,比如把所有2024年第二季度的文件都复制到备份目录:for /f "usebackq delims=" %%a in (`es.exe -s "2024Q2" -path`) do copy "%%a" "D:\Archive"。
五、在PowerShell脚本中结构化处理搜索结果
对于更复杂的任务,PowerShell是更强大的选择。它能将es.exe输出的文本转换成对象,方便进行过滤、排序和导出。
第一步,执行搜索并把每行路径包装成PowerShell对象:$files = es.exe -s "*.log" -path | ForEach-Object { [PSCustomObject]@{Path=$_} }。有了对象数组,后续操作就灵活多了:比如,筛选出其中大于10MB的日志文件,并按修改时间倒序排列,只取最新的5个:$largeLogs = $files | Where-Object { (Get-Item $_.Path).Length -gt 10MB } | Sort-Object { (Get-Item $_.Path).LastWriteTime } -Descending | Select-Object -First 5。处理完后,还能轻松导出为JSON格式,供其他程序调用:$largeLogs | ConvertTo-Json | Out-File logs_summary.json。这样一来,文件管理就真正融入了你的自动化工作流。
