Board logo

标题: [文本处理] 求助:批处理如何在每行前面插入/添加递增的数字序号? [打印本页]

作者: 452452    时间: 2011-11-11 09:27     标题: 求助:批处理如何在每行前面插入/添加递增的数字序号?

本帖最后由 pcl_test 于 2017-6-5 09:41 编辑

求助:批处理如何在每行前面追加序列数字?
盾构机姿态的人工测量原理
基于GPS的时钟同步模型选择与实验分析
半参数模型估计的补偿最小二乘法与正则核方法
上下文敏感的空间信息服务智能推送研究
巴丹吉林沙漠高大沙山区沙层含水量与水分来源探讨
NiCrAlYSi涂层DD6单晶高温合金界面再结晶和互扩散行为研究
CRT显示器的颜色转换模型
ISAR非平稳目标成像时间和转速联合估计方法
盾构刀盘参数化自动建模与优化设计
一种动态角色模型及其实现机制
平稳函数线性内插的教学探讨
基于TGO软件的GPS网同步环及异步环提取

把a文件夹内所有的文本,在每行前面追加序列数字并空两格:
0001  盾构机姿态的人工测量原理
0002  基于GPS的时钟同步模型选择与实验分析
0003  半参数模型估计的补偿最小二乘法与正则核方法
0004  上下文敏感的空间信息服务智能推送研究
0005  巴丹吉林沙漠高大沙山区沙层含水量与水分来源探讨
0006  NiCrAlYSi涂层DD6单晶高温合金界面再结晶和互扩散行为研究
0007  CRT显示器的颜色转换模型
0008  ISAR非平稳目标成像时间和转速联合估计方法
0009  盾构刀盘参数化自动建模与优化设计
0010  一种动态角色模型及其实现机制
0011  平稳函数线性内插的教学探讨
作者: sxw    时间: 2011-11-11 09:50

for /f 试试
作者: lxh623    时间: 2011-11-11 09:50

excel里面应该可以。插入(空行),填充——序列。之后,再在文本编辑器行首添加00,替换制表符为两个空格,删除(替换)多出来的引号。
作者: awk    时间: 2011-11-11 09:56

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set n=10000
  4. for %%a in ("C:\test\a\*.*") do (
  5.     set /a n+=1
  6.     ren "%%a" "!n:~-4!  %%~nxa"
  7. )
复制代码

作者: 452452    时间: 2011-11-11 10:00

回复 2# sxw


   如何用 for /f 试试?
作者: 601997526    时间: 2011-11-11 10:17

本帖最后由 601997526 于 2011-11-11 11:36 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set n=10000
  4. (for /f "delims=" %%a in (a.txt) do (
  5.     set /a n+=1
  6.     echo.!n:~-4!  %%a
  7. ))>b.txt
复制代码
之前这个是复制4楼的,少写了一对括号,已修正
作者: 452452    时间: 2011-11-11 10:34

本帖最后由 452452 于 2011-11-11 10:37 编辑

回复 4# awk


   不是在文件名前面追加序列数字,而是在每个文本文件里面的每行前面追加序列数字。
作者: 452452    时间: 2011-11-11 10:54

回复 6# 601997526


    代码的输出结果只有最后一行
0012  基于TGO软件的GPS网同步环及异步环提取
作者: sxw    时间: 2011-11-11 11:17

6楼的不就可以吗?
作者: lvsehuaxue    时间: 2011-11-11 11:21

  1. @echo off&setlocal enabledelayedexpansion
  2. for %%i in (x:\a\*.txt) do (
  3.      set n=100001
  4.     (for /f "delims=" %%a in (%%i) do (
  5.         echo !n:~1!  %%a
  6.         set /a n+=1
  7.      ))>$
  8.      move $ %%i
  9. )
  10. pause
复制代码

作者: 452452    时间: 2011-11-11 11:36

10楼的没有输出结果
作者: Hello123World    时间: 2011-11-11 12:35

本帖最后由 Hello123World 于 2011-11-11 12:40 编辑
  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. (For /f "delims=: tokens=1*" %%i in ('findstr /n ".*" a.txt') do (
  4. Set n=%%i
  5. If !n! lss 10 Set n=000!n!
  6. If !n! gtr 9 If !n! lss 100 Set n=00!n!
  7. If !n! gtr 99 If !n! lss 1000 Set n=0!n!
  8. echo.!n! %%j
  9. )
  10. )>aa.txt
  11. start aa.txt
  12. pause
复制代码
4,6楼的算法好,我这个太罗嗦了。
作者: cjiabing    时间: 2011-11-11 12:45

如果不限定位数,可以这样:
findstr /n
作者: jellyhk    时间: 2011-11-11 12:45

能不能就改原文件!不生成新文件?
作者: 545810831    时间: 2011-11-11 13:51

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in ('dir /b a\*.txt') do (
  3. set n=10000
  4. for /f "usebackq delims=" %%a in ("%%~dpia\%%~nxi") do (
  5. set /a n+=1
  6. echo !n:~-4!  %%a>>new%%~nxi
  7. )
  8. )
  9. pause
复制代码

作者: szjwxn    时间: 2011-11-11 23:53

本帖最后由 szjwxn 于 2011-11-11 23:56 编辑

看了大家的代码感觉有点麻烦,不知道下面这段代码可以不?
1.txt是你的文件内容,可以把它创建到2.txt里面。
  1. @echo off
  2. color 1a
  3. setlocal enabledelayedexpansion
  4. for /f %%i in (1.txt) do (
  5.   set /a var+=1
  6.    echo 000!var!  %%i >>2.txt
  7.   )
  8. pause
复制代码

作者: awk    时间: 2011-11-12 00:54

回复 16# szjwxn


从第十个开始全都错了
作者: lcg823    时间: 2011-11-13 18:42

本帖最后由 lcg823 于 2011-11-13 18:46 编辑

呵呵,有用,我正想去除每行前面追加序列数字呢!!
有没有去除每行前面追加序列数字的啊?
作者: bluewing009    时间: 2011-11-13 19:03

我的思路:用findstr先列出行号,在用for修改
作者: CrLf    时间: 2011-11-13 19:19

计算行数时建议用 set /a n+=10001,省事、快捷
作者: bluewing009    时间: 2011-11-13 20:35

回复 20# CrLf


    哦~这样也行…………




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