[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批处理怎样根据文本文件数字递推?

AB110103020         
AA120210918                          我有一个文本文件AA.TXT 内容如左
AC090302317
BB100402352

注释:      AB   11   01   03020
前面2个大写字母是指定的  11是年  01是月  03020是万位 最高到99999


表述起来有些复杂   我希望他最终的结果是
AB110100001
AB110100002
AB110103020     一直到3020

AA120200001
AA120200002
AA120210918    一直到10918

然后将这些内容保存到文本文件里去  请会的朋友帮帮忙 谢谢
1

评分人数

    • CrLf: 感谢给帖子标题标注[已解决]字样PB + 2

请问楼主,前面2个大写字母是依据什么排序呢?
  1. type aa.txt |sort >bb.txt
复制代码
这样可以吗?
1

评分人数

    • CrLf: 乐于助人PB + 5

TOP

回复 2# apang


    回复楼上的  前面2个大写的字母  就按照文本文件里既定的前面来就可以了

TOP

楼主是这意思吗?
  1. @echo off&SetLocal EnableDelayEdexpansion&cd /d "%~dp0"
  2. echo 等一下...........
  3. (for /l  %%i in (1 1 3020 ) do (
  4.   set "n=0000%%i"
  5.   set "n=!n:~-5!"
  6.   echo AB1101!n!
  7. ))>1.txt
  8. (for /l  %%i in (1 1 10918) do (
  9.   set "n=0000%%i"
  10.   set "n=!n:~-5!"
  11.   echo AA1202!n!
  12. ))>2.txt
  13. pause
复制代码
1

评分人数

    • CrLf: 乐于助人技术 + 1

TOP

本帖最后由 necnec1 于 2012-3-2 17:28 编辑

回复 4# QIAOXINGXING


    回复三楼  你这个只能对指定其中的几类进行排序  不够智能
由于我的文本前2个大写的字母  是指定的并非随机   大概有几百个 我想要批处理自动读文本 找到AB 然后依次递归下去  然后再找到第二个AA 依次递归   一直到文本的最后
AB110103020         
AA120210918                          
AC090302317
BB100402352
然后把 总的结果 写到一个文本里去

TOP

回复 5# necnec1

对于字母相同的行,年和月是不是也是相同的?
对于字母相同的行,后五位数字是不是连续的?
如果都是,那么 2 楼的应该可以吧.

如果第一问是,第二问不是,那么你的意思是:对于字母相同的行,找到后五位数字的最大值,然后从 00001 递增到 最大值??
是这意思吗??
我得去上课了....

TOP

  1. sort /+2 AA.txt>BB.txt
复制代码
1

评分人数

TOP

本帖最后由 necnec1 于 2012-3-2 18:03 编辑

不知道怎么说  我还是举例子把    AB110103020 这个分解一下   首先的2个大写字母是指定的 不动
11是年份 01是月份  03020是数字  第一位是00001 最大是99999
AB110103020         
AA120210918                          
AC090302317
BB100402352        这是我从文本文件里随便截取的4组 总共有好几百组

第一个
AB110103020   总数是3020个

AB110100001
AB110100002
AB110103020   依次类推  一直到3020


AA120210918  总数是10918个

AA120210001
AA120210002
AA120210918  依次类推  一直到10918
然后把 所有递归的总的结果 写到一个文本里去


不知道这样表述的是否清楚

TOP

代码:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. (for /f %%i in (test.txt) do (
  4.     set str=%%i
  5.     set endNum=!str:~-5!
  6.     for /l %%j in (100001,1,1!endNum!) do (
  7.         set tmpNum=%%j
  8.         echo !str:~0,6!!tmpNum:~1!
  9.     )
  10.     echo;
  11. ))>result.txt
  12. start result.txt
复制代码
1

评分人数

    • CrLf: 乐于助人技术 + 1
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

回复 9# namejm


    namejm 版主的批处理做的真好  能够满足我的要求 谢谢~

TOP

返回列表