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

[文本处理] 批处理如何删除多个txt文本文件里面的最后一行内容?

[复制链接]
发表于 2014-1-21 11:55:01 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2016-7-23 21:58 编辑

现有N个文件夹,文件夹里面有N个文本文件,现需要把文本文件的最后一行内容去掉,请问批处理命令可以实现吗?
另,如果需要高效率处理,请问是否用sed命令会比其它命令高效么,谢谢
发表于 2014-1-21 13:03:06 | 显示全部楼层
本帖最后由 terse 于 2014-1-21 13:21 编辑

可以试试 findstr sed gawk ==命令
有个问题 最后行回车了怎么办
 楼主| 发表于 2014-1-21 16:19:37 | 显示全部楼层
回复 2# terse


    请问这些命令怎么用?还请terse哥指教,谢谢啊!
发表于 2014-1-21 17:16:01 | 显示全部楼层
本帖最后由 terse 于 2014-1-21 17:19 编辑

要看尾行有无回车

  1. findstr $ *.txt
复制代码
下面两个是外部 需下载
sed 加 -i 直接写文件

  1. sed "$d" "*.txt"
复制代码

  1. GAWK "{print FILENAME":" t ;t=$0}" *.TXT
复制代码
 楼主| 发表于 2014-1-21 21:19:53 | 显示全部楼层
回复 4# terse


    再次谢过terse的耐心解决,谢谢
 楼主| 发表于 2014-1-22 14:15:06 | 显示全部楼层
再请教,请问如何显示批处理命令所执行时间?谢谢!
发表于 2014-1-22 16:24:59 | 显示全部楼层
 楼主| 发表于 2014-1-22 19:31:55 | 显示全部楼层
回复 7# DAIC


    看了一下,还是不太懂,请DAIC指教,谢谢
发表于 2014-1-23 08:36:43 | 显示全部楼层
回复 8# gannh


    哪里不懂?
 楼主| 发表于 2014-1-23 11:48:11 | 显示全部楼层
回复 9# DAIC


    这个是脚本代码[保存为etime.bat放在当前路径下即可]:
:etime <begin_time> <end_time> <return>
rem 所测试任务的执行时间不超过1天 // 骨瘦如柴版
setlocal&set be=%~1:%~2&set cc=(%%d-%%a)*360000+(1%%e-1%%b)*6000+1%%f-1%%c&set dy=-8640000
for /f "delims=: tokens=1-6" %%a in ("%be:.=%")do endlocal&set/a %3=%cc%,%3+=%dy%*("%3>>31")&exit/b


我将代码复制,并保存为etime.bat,并运行,得出的结果是

D:\>rem 所测试任务的执行时间不超过1天 // 骨瘦如柴版  

D:\>setlocal & set be=:  & set cc=(%d-%a)*360000+(1%e-1%b)*6000+1%f-1%c  & set dy=-8640000

D:\>for /F "delims=: tokens=1-6" %a in (":") do endlocal & set/a =(%d-%a)*360000+(1%e-1%b)*6000+1%f-1%c,+=-8640000*(">>31")  & exit/b

这是什么问题呢,属于低级错误,还是我不理解?还请指教,谢谢!
发表于 2014-1-24 00:14:51 | 显示全部楼层
回复 10# gannh

  1. @echo off
  2. set t1=%time%
  3. ::程序运行
  4. for /L %%i in (1,1,10000) do ver>nul
  5. set t2=%time%
  6. call :etime %t1% %t2% t
  7. echo %t%
  8. pause&exit

  9. :etime
  10. rem 所测试任务的执行时间不超过1天 // 骨瘦如柴版
  11. setlocal&set be=%~1:%~2&set cc=(%%d-%%a)*360000+(1%%e-1%%b)*6000+1%%f-1%%c&set dy=-8640000
  12. for /f "delims=: tokens=1-6" %%a in ("%be:.=%")do endlocal&set/a %3=%cc%,%3+=%dy%*("%3>>31")&exit/b
  13.    
复制代码
 楼主| 发表于 2014-1-24 11:41:52 | 显示全部楼层
回复 11# terse


    再次感谢terse的耐心指点! 另有个疑问,在DOS下,什么命令可以快速移动多个文本文件(大概有十多万个),谢谢!
发表于 2014-1-25 18:09:30 | 显示全部楼层
本帖最后由 CrLf 于 2014-1-25 18:10 编辑

另类解:
  1. @sort /+9999 a.txt|more +1|sort /+9999
复制代码
效率不高,胜在简单,追求效率还是建议用sed
发表于 2014-1-25 20:06:10 | 显示全部楼层
回复 12# gannh
  1. move /y "原目录\*.txt" "新目录"
复制代码
 楼主| 发表于 2014-1-28 12:36:05 | 显示全部楼层
谢谢crlf指教
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 19:32 , Processed in 0.035489 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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