找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 89510|回复: 21

[文本处理] 批处理如何实现给文本内容添加行号?

[复制链接]
发表于 2014-7-20 18:13:37 | 显示全部楼层 |阅读模式
文本内容比较多,但每行内容的前面没有序号,想用批处理自动给文本内容每行前面加个行号,请问如何写呢?
例如文本内容如下:
11.txt
需v师德师风
bdbdfbd-dfvd=dfd
231231323223123123232312323[fff]
sddfsfsfsd3231方便更方便
自动处理后格式为:
1-bdbdfbd-dfvd=dfd
2-231231323223123123232312323[fff]
3-sddfsfsfsd3231方便更方便
并输出到另外一个文本22.txt里
发表于 2014-7-20 19:36:57 | 显示全部楼层

  1. @echo off
  2. set i=1
  3. >22.txt (for /f "delims=" %%s in (11.txt) do (
  4.         setlocal enabledelayedexpansion
  5.         <nul set /p "_=!i!"
  6.         setlocal disabledelayedexpansion
  7.         <nul set /p "_=-%%s"
  8.         echo,
  9.         set /a i+=1
  10. ))
复制代码
如果分隔符用冒号就简单了:
  1. findstr /N ".*" 11.txt > 22.txt
复制代码
发表于 2014-7-20 20:07:36 | 显示全部楼层
  1. sed = 11.txt | sed "N;s/\n/-/" > 22.txt
复制代码
发表于 2014-7-20 20:09:14 | 显示全部楼层
  1. gawk "{print NR"-"$0}" 11.txt > 22.txt
复制代码
发表于 2014-7-20 21:34:31 | 显示全部楼层
  1. powershell -c "foreach ($i in $(gc 11.txt)) {$n++; "$n-" + $i}" > 22.txt
复制代码
 楼主| 发表于 2014-7-20 22:37:39 | 显示全部楼层
回复 2# jingyu9575


   为什么会出现!i!这种情况,不能全部正常处理
 楼主| 发表于 2014-7-20 22:40:46 | 显示全部楼层
不想使用第三方程序,希望大虾们帮助下吧,
 楼主| 发表于 2014-7-20 22:44:49 | 显示全部楼层
每行前面添加行号和固定字符(例如-或.或空格)
发表于 2014-7-21 00:07:09 | 显示全部楼层
  1. hash /printf:"%d-%s",number,string /file 11.txt >22.txt
复制代码
发表于 2014-7-21 00:08:18 | 显示全部楼层
  1. @echo off
  2. (for /f "tokens=1* delims=:" %%a in ('findstr /n .* 11.txt') do echo %%a-%%b)>22.txt
复制代码

评分

参与人数 1技术 +1 收起 理由
wh1234567 + 1 热心助人,感谢您的帮助

查看全部评分

发表于 2014-7-21 00:19:58 | 显示全部楼层
本帖最后由 CrLf 于 2014-7-21 00:22 编辑
  1. @echo off
  2. for /f %%a in ('find /c /v "" ^<11.txt') do set count=%%a
  3. (for /l %%a in (1 1 %count%) do (
  4.   setlocal enabledelayedexpansion
  5.   set /p "str="&echo;%%a-!str!
  6.   endlocal
  7. ))<11.txt >22.txt
复制代码
 楼主| 发表于 2014-7-21 00:21:30 | 显示全部楼层
本帖最后由 wh1234567 于 2014-7-21 00:29 编辑

回复 10# CrLf


    哦,这个正常,感谢您了
发表于 2014-7-21 00:22:24 | 显示全部楼层
  1. @echo off
  2. ((for /f "delims=" %%a in ('findstr /n .* 11.txt') do (
  3.    set "str=%%a"
  4.    set /a n+=1
  5.    setlocal enabledelayedexpansion
  6.    set "str=!str:*:=!"
  7.    echo !n!-!str!
  8.    endlocal
  9. ))>22.txt
复制代码
 楼主| 发表于 2014-7-21 00:23:58 | 显示全部楼层
本帖最后由 wh1234567 于 2014-7-21 00:28 编辑

回复 11# CrLf


    这个不行,输不出
发表于 2014-7-21 00:44:50 | 显示全部楼层
  1. @set @a=0;/*&echo off
  2. findstr /n .* 11.txt |cscript /nologo /e:jscript %0 >22.txt
  3. pause&exit
  4. */
  5. str = WScript.StdIn.ReadAll()
  6. str = str.replace(/^(\d+):/gm,'$1-')
  7. WScript.Echo(str)
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 10:20 , Processed in 0.019124 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表