背景:当想要查找一个文件时,记得放在某个盘里。手动去遍历时感觉好心累,找了半天还是没有找着(虽然win有自带的搜索框,但是看着进度条的速度,我便果断的点了取消)。基于这个情况,所以写了脚本满足自身查找文件的需求。

一、遍历搜索文件或目录的命令

先来了解一下win自带的遍历搜索命令,这两个命令都可以进行模糊匹配。例如:sea*.bat

  • dir /S search.bat   遍历当前目录查找search.bat 文件
  • forfiles /S /M search.bat   遍历当前目录查找search.bat文件

以上两个命令各有优势,都是指定盘符查找,视情况使用。

二、全盘遍历查找脚本

这里全盘遍历便是根据上述命令进行循环查找

  1. @echo off& setlocal enabledelayedexpansion
  2. rem +++++++++++++++++++++++++++++++++++++++++++
  3. rem search.bat
  4. rem By zhzw @2018/7/4
  5. rem
  6. rem Version: 1.0
  7. rem +++++++++++++++++++++++++++++++++++++++++++
  8. set stime=%time:~0,2%%time:~3,2%%time:~6,2%
  9. if "%stime:~0,1%"==" " set "stime=0%stime:~1%"
  10. if "%1" equ "" (
  11. echo 命令语法不正确。使用/?查看帮助
  12. goto exit
  13. )
  14. if "%1" equ "/?" (
  15. echo 全盘搜索文件/文件夹或者遍历目录。
  16. echo.
  17. echo SEARCH ^[file^]^[folder^]^[path^] ^[/V^]
  18. echo.
  19. echo ^[file^]^[folder^]^[path^]
  20. echo 指定要列出的文件、文件夹或目录列表。
  21. echo.
  22. echo ^[/V^]
  23. echo 查找相关字符串
  24. goto exit
  25. )
  26. if /i "%1" equ "/v" (
  27. echo 模糊查找
  28. set pwd=%cd%
  29. echo start searching .....
  30. echo.
  31. for %%i in (C:\ D:\ E:\ F:\ G:\ H:\ I:\ J:\ K:\) do (
  32. if exist %%i (
  33. echo ■■■■ Searching for the %%i disk
  34. rem if exist %%i\nul
  35. rem cd /d %%i\ & dir /S/b "%1" 2>nul
  36. cd /d %%i & dir /S/b |findstr "%2$" & echo.
  37. )
  38. )
  39. cd /d !pwd!
  40. echo. &echo. &echo.
  41. ) else (
  42. set pwd=%cd%
  43. echo start searching .....
  44. echo.
  45. @rem fsutil fsinfo drives 获得各驱动器盘符
  46. for %%i in (C:\ D:\ E:\ F:\ G:\ H:\ I:\ J:\ K:\) do (
  47. if exist %%i (
  48. echo ■■■■ Searching for the %%i disk
  49. rem if exist %%i\nul
  50. rem cd /d %%i\ & dir /S/b "%1" 2>nul
  51. cd /d %%i & dir /S/b "%1" & echo.
  52. )
  53. )
  54. cd /d !pwd!
  55. echo. &echo. &echo.
  56. )
  57. set etime=%time:~0,2%%time:~3,2%%time:~6,2%
  58. if "%etime:~0,1%"==" " set "etime=0%etime:~1%"
  59. echo 开始时间:%stime%
  60. echo 结束时间:%etime%
  61. :exit

三、配置环境变量命令行使用

我的电脑 -->右键 --> 属性 --> 环境变量 --> 系统变量 --> Path --> 输入search.bat 文件所在路径

这样就能在命令行快速的使用命令查找文件或目录所在路径了

最后附上效果图:

四、扩展 forfiles 的使用

  1. 删除3天前的所有文件
  2. forfiles /P G:\Test\ /D -3 /C "cmd /c del @file"
  3. 删除今天或今天之后的Test目录下的所有数据
  4. forfiles /D +%date:~0,10% /P G:\Test\ /C "cmd /c rd /S/Q G:\Test\"
  5. 删除今天之后的文件和目录
  6. forfiles /D +%date:~0,10% /P G:\Test\ /C "cmd /c if @isdir==true (rd /S/Q @path) else (del @file)"

bat命令行实现全盘遍历搜索文件的更多相关文章

  1. 直接用bat命令对Inno Setup的脚本文件.iss进行编译

    直接用bat命令对Inno Setup的脚本文件.iss进行编译 2010-06-17 15:17 qjn0059 | 浏览 2163 次 编程语言外语学习 分享到:   2010-06-29 11: ...

  2. ResHacker 用命令行方式修改 windows PE文件版本号

    由于工作需要在詹金斯(genkins)集成环境打包,打包避免不了需要修改版本号,写入版本号最简单的方式通过修改windows rc文件 这就意味着,每次构建新版本前需要修改一次源文件 这个在用詹金斯集 ...

  3. 如何使用命令行编译和运行java文件

    相信大家现在一般都在使用IDE环境来开发运行java文件,但我觉得可以在命令行里面简单运行java文件,技多不压身. 接下来我来说一下编译和运行java文件: 第一步,首先下一个入门程序(注意:一定要 ...

  4. 命令行编译多个java文件

    如何使用命令行编译多个java文件 文件结构: method 1 cd javaproject javac -sourcepath javapath -d classpath javapath/*.j ...

  5. Linux (rz、sz命令行)与本地电脑 命令行上传、下载文件

    Linux 与本地电脑直接交互, 命令行上传.下载文件. 一.lrzsz命令行安装: 1.rpm安装:(链接: http://pan.baidu.com/s/1cBuTm2 密码: vijf) rpm ...

  6. java命令行导出、导入sql文件

    @IocBean public class SqlCommandModel{ //用户名 @Inject("java:$conf.get('jdbc.username')") pr ...

  7. python如何通过windows命令行运行一个python程序文件?

    python如何通过windows命令行运行一个python程序文件? cmd 进入到py文件对应目录下或者直接在上面的文件地址栏输入cmd,敲入回车 定位到对应的目录下 输入python xxx.p ...

  8. 用bat批处理程序通过DOS命令行删除所有的空文件夹

    用过gothub或者码云的同学都知道,不包含任何文件的空文件夹上传提交时不被允许的.当然你可以在空文件下创建.keep文件(或.gitkeep文件),然后就可以上传了. 但是如果空文件夹比较多,并且我 ...

  9. C# 动态生成word文档 [C#学习笔记3]关于Main(string[ ] args)中args命令行参数 实现DataTables搜索框查询结果高亮显示 二维码神器QRCoder Asp.net MVC 中 CodeFirst 开发模式实例

    C# 动态生成word文档 本文以一个简单的小例子,简述利用C#语言开发word表格相关的知识,仅供学习分享使用,如有不足之处,还请指正. 在工程中引用word的动态库 在项目中,点击项目名称右键-- ...

随机推荐

  1. java设计模式之单例模式以及实现的几种方法

    java设计模式以及实现的几种方法,看到比较好的博客文章,收藏起来供以后再次阅读.. 参见:http://www.cnblogs.com/garryfu/p/7976546.html

  2. kettle中的合并记录使用记录

    注意:合并记录的使用前提是2个数据源都按比较关键字排过序,否则合并之后的数据不准确,可能会多出很多. 该步骤用于将两个不同来源的数据合并,这两个来源的数据分别为旧数据和新数据,该步骤将旧数据和新数据按 ...

  3. webpack配置模块的查找范围

    一般我们的入口文件会引入一下公共的样式文件,比如这样 import './style' 但是这个样式文件并不会生效呀,因为你的写法不对鸭,你要把文件的后缀名也要写 import './style.cs ...

  4. 今天碰到一个问题,怎么限制用户在固定宽度的input输入框里输入的长度,由此涉猎到了maxlength属性和size属性以及它们的区别。

    最开始想首先要强制在一行,另外超出的隐藏.还有一个思路是把value的值的长度和框的长度怎么联系起来,具体怎么联系我也不知道. 在解决另外一个问题的时候,哥发给我的代码里无意中看见input有个max ...

  5. mysql连接报java.math.BigInteger cannot be cast to java.lang.Long异常

    使用hibernate出现以下错误 java.sql.SQLException: java.lang.ClassCastException: java.math.BigInteger cannot b ...

  6. AutoML总结

    原文:JxKing的博客 | JxKing Blog 前言 AutoML是指尽量不通过人来设定超参数,而是使用某种学习机制,来调节这些超参数.这些学习机制包括传统的贝叶斯优化,多臂老虎机(multi- ...

  7. JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m

    https://blog.csdn.net/u012882327/article/details/69525166

  8. k64 datasheet学习笔记3---Chip Configuration之Human machine interfaces

    1.前言 本文主要概略讲述GPIO相关的内容 2.GPIO configuration 注: GPIO模块没有访问保护,因为他没有连接到peripheral bridge slot上,不受MPU保护 ...

  9. 待解决close

    关于close语句放在哪里,貌似会对结果产生影响 #include <iostream> #include <fstream> using namespace std; int ...

  10. c++学习day4

    1.结构(struct) struct name{ int num; name *next; } 1)所占内存空间即结构中所有成员的变量大小之和 2)定义指向结构变量的指针比如 name *a; na ...