Board logo

标题: [文本处理] 【已解决】BAT:如何将多个文本按特定规律合并 [打印本页]

作者: 思想之翼    时间: 2014-9-1 02:23     标题: 【已解决】BAT:如何将多个文本按特定规律合并

d:\文本\文本1\ 内有如下txt文本:
001_1.txt
001_2.txt
001_3.txt
001_4.txt
001_5.txt
001_6.txt

002_1.txt
002_2.txt
002_3.txt
002_4.txt
002_5.txt
002_6.txt
......
210_1.txt
210_2.txt
210_3.txt
210_4.txt
210_5.txt
210_6.txt

欲将
001_1 -- 001_6.txt   按4个文本为一组进行合并,共15个组合,合并后的文本分别命名为 001_1 -- 001_15.txt,写入d:\文本\文本2\
002_1 -- 002_6.txt   按4个文本为一组进行合并,共15个组合,合并后的文本分别命名为 002_1 -- 002_15.txt,写入d:\文本\文本2\
......
210_1 -- 210_6.txt   按4个文本为一组进行合并,共15个组合,合并后的文本分别命名为 210_1 -- 210_15.txt,写入d:\文本\文本2\
这样的代码如何写?

若6个文本按3个文本为一组进行合并,共20个组合,上述代码修改哪里?
若6个文本按5个文本为一组进行合并,共6个组合,上述代码修改哪里?
作者: terse    时间: 2014-9-1 19:32

  1. @echo off&setlocal enabledelayedexpansion
  2. set /a m=3,j=1,i=1
  3. for /l %%i in (1,1,6) do (
  4.     if %%i gtr !m! (
  5.        set /a "s=!s!0,i*=%%i,j*=(%%i-m)"
  6.     )else set "s=1!s!"
  7. )
  8. set s=0!s!&set /a i/=j
  9. for /l %%i in (1 1 !i!) do (
  10.     for /l %%j in (1 1 6) do (
  11.         if "!s:~%%j,1!" == "1" set "$%%i=!$%%i!:%%j.txt"
  12.     )
  13.     for /f %%j in ("!s:10= !") do set "j=%%j"
  14.     set s=0!j:0=!!j:1=!1!s:*10=!
  15. )
  16. pushd "d:\文本\文本1\"
  17. for /l %%a in (1,1 210) do (
  18.     set str=00%%a
  19.     for %%b in ("!str:~-3!") do (
  20.         for /l %%i in (1 1 !i!) do (
  21.             set "s=!$%%i:*:=!"
  22.             set "s=%%~b_!s::=+%%~b_!"
  23.             copy /b !s! "..\文本2\%%~b_%%i.txt" >nul
  24.         )
  25.     )
  26. )
  27. pause
复制代码





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