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

[文本处理] [已解决]批处理怎样删除文本第一行和最后一行?

[复制链接]
发表于 2011-8-4 04:25:16 | 显示全部楼层 |阅读模式
本帖最后由 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 行 应该如何修改

评分

参与人数 1PB +2 收起 理由
CrLf + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2011-8-4 07:22:01 | 显示全部楼层
你写的注释给谁看的呀?
不要把删减后完全错误的code发过来,浪费时间. 要贴就贴原始code.
发表于 2011-8-4 08:56:52 | 显示全部楼层
帮你写了个,自己改 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%
复制代码

评分

参与人数 1技术 +1 收起 理由
CrLf + 1 乐于助人

查看全部评分

发表于 2011-8-4 09:56:23 | 显示全部楼层
本帖最后由 CrLf 于 2011-8-4 17:42 编辑

本贴标题修改后基本符合版规,故将原警告贴删除
 楼主| 发表于 2011-8-4 17:09:06 | 显示全部楼层
对不起各位大大来 .浪费各位大大时间....感谢版主木有ban小弟ID
发表于 2011-8-4 17:43:36 | 显示全部楼层
回复 5# newfish


    除非是发布广告贴或者言行极为恶劣的用户才会被禁止访问...
发表于 2011-8-4 18:12:49 | 显示全部楼层
随手写写

  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!=最后一行

评分

参与人数 1技术 +1 收起 理由
Hello123World + 1 乐于助人

查看全部评分

 楼主| 发表于 2011-8-4 18:56:16 | 显示全部楼层
我靠 ..如此简练有效的代码.而且超好懂 ....佩服!!!
发表于 2011-8-4 19:18:47 | 显示全部楼层
  1. sed "1d;$d" a.txt | more >b.txt
复制代码

评分

参与人数 1PB +2 收起 理由
CrLf + 2 乐于助人

查看全部评分

 楼主| 发表于 2011-8-5 00:48:27 | 显示全部楼层
楼上这个 ...是 神马 意思 ....好奇怪...的代码!!
发表于 2011-8-5 19:21:54 | 显示全部楼层
回复 11# else


如果你不知道从哪里下载,我很乐意告诉你。
发表于 2011-8-5 19:29:38 | 显示全部楼层
本帖最后由 pcl_test 于 2016-7-10 22:37 编辑

回复 13# else


http://www.bathome.net/s/tool/index.html?key=sed

评分

参与人数 1技术 +1 收起 理由
else + 1 感谢提供链接!

查看全部评分

发表于 2016-11-8 00:06:24 | 显示全部楼层
  1. //&cls&cscript -nologo -e:jscript "%~f0"<"文本.txt"&pause&exit

  2. WSH.Echo(WSH.StdIn.ReadAll().replace(/^.+\n|.+\n?$/g,''));
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 18:32 , Processed in 0.036265 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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