C# 调用Everything查找文件
Everything
everything的下载 https://www.voidtools.com/zh-cn/
在下载页面往下拉,我们还需要 Everything的命令行接口工具 ES.exe
ES.exe的使用
在官网中也有介绍这个工具如何使用以及一些案例,https://www.voidtools.com/zh-cn/support/everything/command_line_interface/
举个例子 查找F盘中后缀为zip的压缩包
打开命令行界面,进入es.exe的目录下,(我这里的es.exe放在D:\MyEverything目录),输入查找命令: *es.exe F: .zip
查找结果如下:
注意:这个es.exe工具,需要先打开Everything软件,才可以使用!
C#调用Everything查找文件
大体思路:C#调用命令行,控制es.exe的运行和查询内容,最后再读取命令行运行结果即可。
EverythingHelper类
代码如下,需要 使用 using System.Diagnostics; 命名空间
public class EverythingHelper{private static string CmdPath = @"C:\Windows\System32\cmd.exe";public static void RunCmd(string cmd, out string output){//说明:不管命令是否成功均执行exit命令,//否则当调用ReadToEnd()方法时,会处于假死状态cmd = cmd.Trim().TrimEnd('&') + "&exit";output = string.Empty;using (Process p = new Process()){p.StartInfo.FileName = CmdPath;//es.exe的目录下运行命令行p.StartInfo.WorkingDirectory = @"D:\MyEverything";//是否使用操作系统flash启动p.StartInfo.UseShellExecute = false;//接受来自调用程序的输入信息p.StartInfo.RedirectStandardInput = true;//接受来自调用程序的输出信息p.StartInfo.RedirectStandardOutput = true;//重定向标准错误输出p.StartInfo.RedirectStandardError = true;//不显示程序窗口p.StartInfo.CreateNoWindow = true;//启动程序p.Start();//向cmd窗口写入命令p.StandardInput.WriteLine(cmd);p.StandardInput.AutoFlush = true;//获取cmd窗口的输出信息output = p.StandardOutput.ReadToEnd();//等待程序执行完退出进程p.WaitForExit();p.Close();}}}
UI界面
效果图如下,在F盘中查找后缀为zip且文件名字带有VS的文件。搜索功能具体实现的代码:
/// <summary>/// 搜索/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void BtnSearch_Click(object sender, EventArgs e){string cmdStr = string.Empty;if(tbDir.Text.Length > 0){//路径cmdStr += tbDir.Text + " ";}if(tbKeyWord.Text.Length > 0){//关键词cmdStr += tbKeyWord.Text + " ";}if(tbSuffix.Text.Length > 0){//后缀cmdStr += "*." + tbSuffix.Text;}if(cmdStr.Length < 1){return;}string resultStr;EverythingHelper.RunCmd("es.exe " + cmdStr, out resultStr);if(resultStr.Length > 0){tbOutput.Text = "";//记录到初步的完整路径List<string> AllPath = new List<string>();//分割得到的字符串SpitPath(ref resultStr, ref AllPath);foreach(string path in AllPath){tbOutput.Text += path + System.Environment.NewLine;}}}/// <summary>/// 处理Evething得到的数据/// </summary>/// <param name="reslutPath">cmd命令得到的字符串</param>/// <param name="AllPath"></param>private static void SpitPath(ref string reslutPath, ref List<string> AllPath){string tempStr = string.Empty;//分割命令行的字符串string[] tempstr = reslutPath.Split(new String[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);for (int i = 0; i < tempstr.Length; i++){if (!File.Exists(tempstr[i])){//不是文件路径则继续往下判断continue;}else{if (tempStr.Equals(tempstr[i])){//路径重复continue;}else{//记录文件的路径tempStr = tempstr[i];AllPath.Add(tempstr[i]);}}}}
小结
Everything小巧便捷且功能搜索功能文件功能强大,还有很多不同条件的查找功能。感谢开发者给我们免费使用!最后,附上该Demo的完整工程。https://download.csdn.net/download/weixin_40314351/86399754?spm=1001.2014.3001.5503
C# 调用Everything查找文件相关推荐
- linux下Qt调用C++库文件(.so)程序实现
文章目录 主要内容 一.编程环境及实现方法 二.项目实现 1.创建项目 2.导入库文件 三.项目中遇到的问题 总结 主要内容 如标题所示,在linux下使用qtcreator创建项目调用C++库文件, ...
- linux 查找文件夹_用python打造一个基于socket的文件(夹)传输系统
这段时间在学习python,接触到了网络编程中的socket这块,加上自己在用的Linux服务器都是原生支持python的,于是乎有了个做文件传输功能程序的想法. 毕竟python语言中,有下载功能的 ...
- python打开方式错误_浅谈python 调用open()打开文件时路径出错的原因
昨晚搞鼓了一下python的open()打开文件 代码如下 def main(): infile =open("C:\Users\Spirit\Desktop\bc.txt",'r ...
- 使用glob()查找文件
大部分PHP函数的函数名从字面上都可以理解其用途,但是当你看到 glob() 的时候,你也许并不知道这是用来做什么的,其实glob()和scandir() 一样,可以用来查找文件,请看下面的用法:摘自 ...
- 用 _findfirst 和 _findnext 查找文件
一.这两个函数均在io.h里面. 二.首先了解一下一个文件结构体: struct _finddata_t { unsigned attrib; time_t ...
- 【linux find命令】在目录中查找文件并删除文件
文章目录 find命令格式 一.按文件名搜索 二.按文件大小搜索 三.按修改时间搜索 四.按文件类型搜索 五.按权限搜索 六.按所有者和所属组搜索 七.逻辑运算符 八.其他选项 find命令格式 fi ...
- bat递归查找指定文件_教你在电脑上用批处理脚本全盘查找文件
0x00- 效果预览: 0x01 - 前言: 说起文件查找大家肯定都会,那么你试过用批处理脚本来查找一个文件在哪里吗? 今天就让我们来写一个能够全盘查找文件的批处理脚本吧! 0x02 - 准备: 设备 ...
- python open找不到文件的原因_浅谈python 调用open()打开文件时路径出错的原因
昨晚搞鼓了一下python的open()打开文件 代码如下 def main(): infile =open("C:\Users\Spirit\Desktop\bc.txt",'r ...
- linux怎么在目录下查找文件,linux find-在指定目录下查找文件
find命令用来在指定目录下查找文件.任何位于参数之前的字符串都将被视为欲查找的目录名.如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件.并且将查找到的子目录和文件全部进 ...
最新文章
- 用ASP.NET上传图片并生成带版权信息的缩略图
- 安装的 Python 版本太多互相干扰?pyenv 建议了解一下。
- CMMI过程域-MA度量和分析
- yolov4网络结构_重磅更新!YoLov4最新论文!解读YoLov4框架!
- ERC20 Short Address Attack
- Qt for Android环境配置
- 银泰上云 打造“从-1到0再到1”数字化成长逻辑
- 设计素材模板|春节要来了,素材准备好了么?
- AnnotationTransactionAttributeSource is only available on Java 1.5 and higher
- Facts have proved that this is more popular than his article
- npm 报错 : npm ERR! Maximum call stack size exceeded
- 面向对象编程 和 面向接口编程
- WPF的DataGrid的某个列绑定数据的三种方法(Binding、Converter、DataTrigger)
- 两个集合的交集 java版本
- 利用模版元编程将传统冒泡排序性能提升两倍以上
- DCDC和LDO的区别
- 用形态学及HSV完成车牌照识别
- 人民币与美元汇率兑换程序
- 数字图像处理——红眼去除(Python)
- Android webview和HTML的JS交互
热门文章
- matlab水果图片,matlab数字图像处理-----------------水果识别
- com.mysql.jdbc.exceptions.MySQLSyntaxErrorException
- Packet(信息包)
- 【前端指南】f5与ctrl+f5的区别
- vim 安装插件及常用插件
- 全国计算机一级等级分布,计算机一级考试分布
- linux开机启动任务和定时执行任务
- 关于书籍“Composing Programs”1.6.3自定义函数的嵌套定义与非嵌套定义的比较
- 我的Hadoop安装流程
- 相随与欢-彩色泡泡机的设计与实现