Board logo

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

作者: toyerspollors    时间: 2022-2-13 01:35     标题: 【已解决】批处理设置关键字与修改日期来搜索文件的方法,请指教!

本帖最后由 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
作者: Fit    时间: 2022-2-14 12:18

@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

试一试!!
作者: Fit    时间: 2022-2-14 19:30

@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


有点慢,再试试!
作者: toyerspollors    时间: 2022-2-15 00:51

@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\路径下”这步操作,盼帮修改一下,谢谢!
作者: Fit    时间: 2022-2-15 12:55

@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
作者: toyerspollors    时间: 2022-2-15 15:07

可以正常使用!!!

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

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

斗破穹苍第一章.txt         2020/01/18
三国演义人物简介.txt       2021/03/05
红楼梦经典段子.pdf         2021/11/23
作者: Fit    时间: 2022-2-19 17:27

@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,你可以换成你的名称,要在同目录下
作者: toyerspollors    时间: 2022-2-21 16:35

谢谢老师帮助!




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2