找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 18237|回复: 7

[文件操作] 【已解决】批处理设置关键字与修改日期来搜索文件的方法,请指教!

[复制链接]
发表于 2022-2-13 01:35:49 | 显示全部楼层 |阅读模式
本帖最后由 toyerspollors 于 2022-2-21 16:34 编辑

比如我要在D盘中搜索关键字为“批处理”,后缀为txt,文件修改日期为 2022/01/28 的文件,

搜索出来后移动到D:\123\路径下,另外生成一份文件的原路径清单。

不知道要如何编写这类复杂的命令?请老师指教!!

以上的操作不专业,能达到下方效果会好一些!!

不知道能不能把关键词文件名,以及修改时间编辑在txt文本中,让bat去识别啊。文本内容如下:

斗破穹苍第一章.txt         2020/01/18
三国演义人物简介.txt       2021/03/05
红楼梦经典段子.pdf         2021/11/23
发表于 2022-2-14 12:18:21 | 显示全部楼层
@echo off &setlocal enabledelayedexpansion
(for /f "tokens=*" %%i in ('dir /s /od /a-d *批处理*.txt ^| find "2022/01/28"') do echo %%i)>D:\123\目录清单.txt
pause

试一试!!
发表于 2022-2-14 19:30:01 | 显示全部楼层
@echo off &setlocal enabledelayedexpansion
set /a cout=0
(for /f "tokens=*" %%i in ('dir /s /a-d /b *批处理*.txt') do (
        dir /a-d /od "%%i" | find "2022/01/28"  1>nul 2>nul
        if !errorlevel! equ 0 (
                set /a cout+=1
                echo,【!cout!】%%i
        )
))>D:\123\目录清单.txt

pause&exit


有点慢,再试试!

评分

参与人数 1技术 +1 收起 理由
toyerspollors + 1 乐于助人

查看全部评分

 楼主| 发表于 2022-2-15 00:51:13 | 显示全部楼层
@echo off &setlocal enabledelayedexpansion
set /a cout=0
(for /f "tokens=*" %%i in ('dir /s /a-d / ...
Fit 发表于 2022-2-14 19:30


老师的命令是可以生成相关文件的清单,但是少了“搜索出来后移动到D:\123\路径下”这步操作,盼帮修改一下,谢谢!
发表于 2022-2-15 12:55:56 | 显示全部楼层
@echo off &setlocal enabledelayedexpansion
set /a cout=0
(for /f "tokens=*" %%i in ('dir /s /a-d /b *批处理*.txt') do (
        dir /a-d /od "%%i" | find "2022/01/28"  1>nul 2>nul
        if !errorlevel! equ 0 (
                set /a cout+=1
                echo,【!cout!】%%i
                move "%%i" "D:\123\"  >nul
        )
))>D:\123\目录清单.txt

pause&exit

评分

参与人数 1技术 +1 收起 理由
toyerspollors + 1 乐于助人

查看全部评分

 楼主| 发表于 2022-2-15 15:07:05 | 显示全部楼层
可以正常使用!!!

不过感觉效率有点低,搜索多个不同文件名设置起来有些费时。

不知道能不能把关键词文件名,以及修改时间编辑在txt文本中,让bat去识别啊。文本内容如下:

斗破穹苍第一章.txt         2020/01/18
三国演义人物简介.txt       2021/03/05
红楼梦经典段子.pdf         2021/11/23
发表于 2022-2-19 17:27:19 | 显示全部楼层
@echo off &setlocal enabledelayedexpansion
set /a cout=0
rem 下面变量是你的txt文件名
set txt=关键.txt
(for  /f  "tokens=1,2,3 delims=. " %%a in (%txt%) do (
  for /f "tokens=*" %%i in ('dir /s /a-d /b "*%%a*.%%b"') do (
        dir /a-d /od "%%i" | find "%%c"  1>nul 2>nul
        if !errorlevel! equ 0 (
                set /a cout+=1
                echo,【!cout!】%%i
                move "%%i" "D:\123\"  >nul
        )
  )
  echo,--------------------------------------------------------
))>D:\123\目录清单.txt

pause&exit


试试,关键.txt,你可以换成你的名称,要在同目录下

评分

参与人数 1技术 +1 收起 理由
toyerspollors + 1 乐于助人

查看全部评分

 楼主| 发表于 2022-2-21 16:35:00 | 显示全部楼层
谢谢老师帮助!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 08:46 , Processed in 0.031362 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表