Board logo

标题: [文本处理] [已解决]批处理怎样删除文本第一行和最后一行? [打印本页]

作者: newfish    时间: 2011-8-4 04:25     标题: [已解决]批处理怎样删除文本第一行和最后一行?

本帖最后由 newfish 于 2011-8-5 05:44 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. for %%i in (1.txt) do (
  3. set "f=%%i"
  4. for /f "usebackq delims=" %%j in ("!f!") do set/a n+=1
  5. set/a n-=2
  6. for /f "delims=" %%m in ('"type "!f!"|more +1& cd. 2^>!f!"') do set/a x+=1&if !x! leq !n! echo;%%m>>!f!
  7. set/a n=0,x=0
  8. )
  9. pause
复制代码

1.txt内容为
____________________________
1
2
3
4
5
_____________________________
运行代码后 为
____________________________
2
3
4
____________________________
问题1: 这段代码是如何实现删除第一行和最后一行的
问题2: 如果要删除 第N行和最后N 行 应该如何修改
作者: hfg1977    时间: 2011-8-4 07:22

你写的注释给谁看的呀?
不要把删减后完全错误的code发过来,浪费时间. 要贴就贴原始code.
作者: hfg1977    时间: 2011-8-4 08:56

帮你写了个,自己改 file_name pro_line back_line 三个参数
  1. @echo off
  2. set "file_name=01.txt"
  3. set pro_line=1
  4. set back_line=1
  5. for /f %%a in ('type "%file_name%"^|find /c /v ""') do (echo %%a&set num_line=%%a)
  6. set/a last_line=num_line-back_line
  7. cd.>"%temp%\tmp.txt"
  8. for /f "skip=%pro_line% tokens=1* delims=:" %%a in ('findstr/n .* "%file_name%"') do (
  9. if %%a leq %last_line% (echo.%%b) else (goto:end)
  10. )>>"%temp%\tmp.txt"
  11. :end ==============================================================
  12. type "%temp%\tmp.txt">%file_name%
复制代码

作者: CrLf    时间: 2011-8-4 09:56

本帖最后由 CrLf 于 2011-8-4 17:42 编辑

本贴标题修改后基本符合版规,故将原警告贴删除
作者: newfish    时间: 2011-8-4 17:09

对不起各位大大来 .浪费各位大大时间....感谢版主木有ban小弟ID
作者: CrLf    时间: 2011-8-4 17:43

回复 5# newfish


    除非是发布广告贴或者言行极为恶劣的用户才会被禁止访问...
作者: cjiabing    时间: 2011-8-4 18:12

随手写写
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "skip=1 tokens=*"  %%a in (1.txt) do (
  3.       echo;!var!
  4.       set var=%%a
  5. )
  6. pause
复制代码
]
skip=第一行
!var!=最后一行
作者: newfish    时间: 2011-8-4 18:56

我靠 ..如此简练有效的代码.而且超好懂 ....佩服!!!
作者: CUer    时间: 2011-8-4 19:18

  1. sed "1d;$d" a.txt | more >b.txt
复制代码

作者: newfish    时间: 2011-8-5 00:48

楼上这个 ...是 神马 意思 ....好奇怪...的代码!!
作者: CUer    时间: 2011-8-5 19:21

回复 11# else


如果你不知道从哪里下载,我很乐意告诉你。
作者: CUer    时间: 2011-8-5 19:29

本帖最后由 pcl_test 于 2016-7-10 22:37 编辑

回复 13# else


http://www.bathome.net/s/tool/index.html?key=sed
作者: pcl_test    时间: 2016-11-8 00:06

  1. //&cls&cscript -nologo -e:jscript "%~f0"<"文本.txt"&pause&exit
  2. WSH.Echo(WSH.StdIn.ReadAll().replace(/^.+\n|.+\n?$/g,''));
复制代码





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