Board logo

标题: [文本处理] [已解决]修改BAT:按自然顺序合并文本 [打印本页]

作者: 思想之翼    时间: 2013-11-11 21:33     标题: [已解决]修改BAT:按自然顺序合并文本

下述代码按1 10 100 ...顺序合并文本,欲按1 2 3...顺序合并文本,代码如何修改?
另:若将文本序号改为001 002 003... 似乎可以按自然顺序合并,但是下述代码却出错。欲使之正常运行,代码如何修改?
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f %%i in ('dir/b/on *.txt') do (
  4. set/a n+=1
  5. set m=
  6. for /f "tokens=*" %%j in ('type "%%i"') do (
  7. set/a m+=1
  8. set #!n!!m!=%%j))
  9. (for /l %%i in (1,1,%m%) do (
  10. for /l %%j in (1,1,%n%) do (
  11. call echo !#%%j%%i!)))>a.txt
  12. start a.txt
复制代码

作者: terse    时间: 2013-11-12 00:18

前提是你的文件名有规律吗
是1.txt-100.txt 这样吗?还是有其他的
作者: foxJL    时间: 2013-11-12 09:53

  1. @echo off
  2. for /f %%i in ('dir /b *.txt') do (type %%i>>a.txt)
  3. pause
复制代码

作者: 1270697389    时间: 2013-11-12 12:56

本帖最后由 foxJL 于 2013-11-12 14:13 编辑
  1. @echo off
  2. for /f %%i in ('dir /b/od *.txt') do (type %%i>>a.txt)
  3. pause
复制代码
我也来一个,这个是按时间顺序排列的。
作者: 思想之翼    时间: 2013-11-13 14:21

回复 2# terse

有规律:1 2 3 4 ...或者w1 w2 w3...但不是两者混杂
作者: apang    时间: 2013-11-13 18:35

假设文件名:1.txt,2.txt,3.txt,一直到100.txt
  1. @echo off&setlocal enabledelayedexpansion
  2. set "end=100"
  3. for /l %%i in (1 1 %end%) do (
  4.     set "m="
  5.     for /f "delims=" %%a in ('type "%%i.txt"') do (
  6.         set /a m+=1
  7.         set "#%%i#!m!=%%a"
  8.     )
  9. )
  10. (for /l %%i in (1 1 !m!) do (
  11.     for /l %%j in (1 1 %end%) do echo,!#%%j#%%i!
  12. ))>Result.txt
  13. pause
复制代码

作者: terse    时间: 2013-11-13 20:02

本帖最后由 terse 于 2013-11-13 20:04 编辑
  1. @echo off
  2. For /f %%i in ('dir /b *.txt ^|find /c /v ""') do set n=%%i
  3. (For /L %%i in (1,1,%n%) do type "%%i.txt")>Result.txt
  4. pause
复制代码





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