Board logo

标题: [文本处理] 求助批处理copy合并指定的时间段txt文件到一个txt里 [打印本页]

作者: yp2121540    时间: 2019-8-1 14:34     标题: 求助批处理copy合并指定的时间段txt文件到一个txt里

好比现在一个文件夹下包含多个文件 命名格式分别是2019-01-01 XXX.txt  现在我想取 2019-01-01 到2019-01-15号的txt文件内容到 一个新的txt文件,请大神帮忙~ 在线坐等
作者: yp2121540    时间: 2019-8-1 14:35

有没有人帮忙下 ,谢谢  怎么写 能给批处理代码粘贴下么
作者: Batcher    时间: 2019-8-1 20:52

回复 1# yp2121540
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. REM 设置开始日期
  4. set start=2019-01-01
  5. REM 设置结束日期
  6. set end=2019-01-15
  7. set /a sy=%start:~,4%,sm=1%start:~5,2%%%100,sd=1%start:~8,2%%%100,ey=%end:~,4%,em=1%end:~5,2%%%100,ed=1%end:~8,2%%%100,a=31
  8. for %%a in (1 3 5 7 8 10 12 4 6 9 11) do (
  9.     if %%a equ 4 set /a a-=1
  10.     set /a _%%a=a
  11. )
  12. (for /l %%a in (%sy%,1,%ey%) do (
  13.     set /a "_2=^!(%%a%%4)&^!(^!(%%a%%100))|^!(%%a%%400)+28"
  14.     set /a a=1,b=12
  15.     if "%%a" equ "%sy%" set /a a=sm
  16.     if "%%a" equ "%ey%" set /a b=em
  17.     for /l %%b in (!a!,1,!b!) do (
  18.         set /a c=1,d=_%%b
  19.         if "%%a%%b" equ "%sy%%sm%" set /a c=sd
  20.         if "%%a%%b" equ "%ey%%em%" set /a d=ed
  21.         for /l %%c in (!c!,1,!d!) do (
  22.             for %%d in (%%b %%c) do set ".%%d=0%%d"&set ".%%d=!.%%d:~-2!"
  23.             echo %%a-!.%%b!-!.%%c!
  24.         )
  25.     )
  26. ))>"%temp%\DateList.txt"
  27. type nul >"结果.txt"
  28. for /f %%a in ('type "%temp%\DateList.txt"') do (
  29.     if exist "%%a*.txt" (
  30.         type "%%a*.txt" >>"结果.txt"
  31.     )
  32. )
复制代码

作者: yp2121540    时间: 2019-8-2 09:43

回复 3# Batcher


    如果我这标题格式 不只有日期呢?如2019-01-05  XXXXXXX_part.txt   我这是否可以这样模糊搜索 这一类时间段的文件?
作者: yp2121540    时间: 2019-8-2 11:09

回复 3# Batcher


    整合的时候能不是一个长串么   都用回车隔开
作者: flashercs    时间: 2019-8-2 12:55

  1. @echo off
  2. set "searchdir=."
  3. set "searchpattern=????-??-?? *.txt"
  4. set "newfile=.\new.txt"
  5. set startdate=2019-01-01
  6. set enddate=2019-01-15
  7. cd . >"%newfile%"
  8. for /f "delims=" %%A in ('where "%searchdir%:%searchpattern%"') do (
  9.   for /f "tokens=1" %%B in ("%%~nxA") do (
  10.     if %%B geq %startdate% (
  11.         if %%B leq %enddate% (
  12.           REM echo %%A
  13.           copy /y /b "%newfile%"+"%%A"
  14.           echo.>>"%newfile%"
  15.         )
  16.       )
  17.   )
  18. )
  19. pause
  20. exit /b
复制代码

作者: Batcher    时间: 2019-8-2 14:32

回复 4# yp2121540


    3楼代码无法处理这个情况是吗?请把你的测试用例和测试结果发出来看看,我试试能否重现你的问题。
作者: yp2121540    时间: 2019-8-2 16:53

回复 7# Batcher


    这个脚本只适用于.txt文件么  .sql文件不适合么?
作者: yp2121540    时间: 2019-8-2 16:54

回复 6# flashercs


   
    这个脚本只适用于.txt文件么  .sql文件不适合么?
作者: yp2121540    时间: 2019-8-2 17:07

已经解决 谢谢大家




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