标题: [其他] 求助批处理 多个盘里有相同的文件 如何 搜索最新创建的这个特定文件 [打印本页]
作者: zhuzhihua422619 时间: 2021-10-14 21:44 标题: 求助批处理 多个盘里有相同的文件 如何 搜索最新创建的这个特定文件
如题 现在有需求 查找某个文件 (多个同名文件 在不同的文件夹 和不同的盘里面) 然后取最新创建的那个
作者: aloha20200628 时间: 2021-10-15 17:56
利用dos系统三个命令 dir, findstr, sort 通过管道操作可能会解决你的问题。
CMD窗口下的命令行代码如下:
dir /s/o-d "c:\目录-1\同一文件名" "d:\目录-2\同一文件名" "e:\目录-3\同一文件名" | findstr /c:"同一文件名" | sort /r
如果只查找一个目录,可省去最后的 sort 调用。
如果是全盘查找尤其是c盘(系统盘)可能会很漫长。
作者: dos大帝 时间: 2021-10-15 22:09
本帖最后由 dos大帝 于 2021-10-17 16:57 编辑
- @echo off & setLocal enableDelayedExpansion
-
- goto comment
- 找出创建时间最晚的, 名字完全符合的文件
- 不查找系统文件和隐藏文件
- 创建时间精确到分, 同一分钟创建的文件不做排序
- 随着查找的进行, 所耗内存越来越大, 不建议一下找完全部路径, 可分别输入搜索路径
- 搜索文件名有中文注意bat编码用GKB
- :comment
-
- rem 在下面输入要查找的路径, 文件名及后缀
- set devices="D:\folder\" "E:\"
- set file_name="test.txt"
-
- for %%i in (%devices%) do (
- echo.
- echo start_find %%i
-
- pushd %%i
-
- for /r %%j in (*.*) do (
- if "%%~nxj" == %file_name% (
- echo %%~dpnxj
-
- set find_file=!find_file! "%%j"
- )
- )
-
- popd
- )
-
- for %%i in (%find_file%) do (
- for /f "tokens=1-3,*" %%a in ('dir "%%~i" /tc') do (
- if "%%d" == %file_name% (
- if defined result_str (
- rem 比较时间大小,找出最新创建的
- set new_ytd=%%a
- set new_hm=%%b
-
- set new_time="!new_ytd:~0,4!!new_ytd:~5,2!!new_ytd:~8,2!!new_hm:~0,2!!new_hm:~3,2!"
- set old_time="!result_str:~0,4!!result_str:~5,2!!result_str:~8,2!!result_str:~11,2!!result_str:~14,2!"
-
- if !new_time! gtr !old_time! (
- set result_str=%%a %%b %%~i
- )
- ) else (
- set result_str=%%a %%b %%~i
- )
- )
- )
- )
-
- echo.
- for /f "tokens=1-2,*" %%i in ("!result_str!") do (
- echo create_time: %%i %%j
- echo path: %%k
- )
-
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |