![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-05 19:24 |
共 48,039 主题排行 / 350,124 发帖 / 今日 2 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [已结]如何删除含有特殊字符文件的最后一行 |
| 可打印版本 985 / 11 |
| 第1楼 hbby | 发表于 2007-09-14 11:01 |
| 中级用户 发帖 99 积分 220 | |
|
[已结]如何删除含有特殊字符文件的最后一行 原文件为:
sfgsdfgsdfgsdfg sdfgsdfgsdfgsdfg sdfgsdfgsdfgsdfg sdfgsdfgsdfgsdfg sdfgsdfgsdfgsdfgs echo :end>>c:\dostools\backup.tmp 456468764 :end 我的批处理为: @ECHO OFF for /f "delims=:" %%i in ('findstr /n . test.txt') do set /a num=%%i-1 for /f "tokens=*" %%i in ('more test.txt +%num%') do set xxx=%%i type test.txt|find /v "%xxx%">backup.txt&&echo %num% 但是执行结果除了删除了最后一行,还把echo :end>>c:\dostools\backup.tmp这行给删除了!请各位老大帮忙修改下,让此批处理支持特殊字符! [ Last edited by hbby on 2007-9-15 at 03:14 PM ] |
|
| 第2楼 ccwan | 发表于 2007-09-14 11:07 |
| 金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊 | |
|
findstr $ test.txt>backup.txt
|
|
| 第3楼 hbby | 发表于 2007-09-14 11:12 |
| 中级用户 发帖 99 积分 220 | |
|
试过这个代码,可以删除最后一行,但是不可以叠加使用,如果再使用不能再删除倒数第二行
|
|
| 第4楼 ccwan | 发表于 2007-09-14 11:17 |
| 金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊 | |
| 第5楼 hbby | 发表于 2007-09-14 11:20 |
| 中级用户 发帖 99 积分 220 | |
|
我昨天晚上就查到了这页,用的就是这页的代码,可是特殊字符解决不了,老大能帮忙修改下吗?谢谢
|
|
| 第6楼 ccwan | 发表于 2007-09-14 11:41 |
| 金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊 | |
| 第7楼 terse | 发表于 2007-09-14 16:31 |
| 银牌会员 发帖 946 积分 2,404 | |
|
@echo off&setlocal enabledelayedexpansion
for /f "delims=:" %%i in ('findstr /n . test.txt') do set n=%%i set /a nm=%n% 2>nul for /f "delims=" %%i in ('findstr /n .* test.txt') do ( set /a mn=%%i 2>nul set "m=%%i" set "m=!m:*:=!" if !nm! EQU !mn! goto end echo.!m!>>test2.txt ) :end pause |
|
| 第8楼 hbby | 发表于 2007-09-15 10:39 |
| 中级用户 发帖 99 积分 220 | |
|
7楼的兄弟,非常感谢你的帮助,经我测试,此P处理用于删除自身内容的最后一行,文本内容会有变化,也就是说此P处理的本身还有特殊字符,还有更好的方法吗?
|
|
| 第9楼 qinbuer | 发表于 2007-09-15 11:26 |
| 高级用户 发帖 228 积分 512 | |
| 第10楼 scriptor | 发表于 2007-09-15 12:52 |
| 银牌会员 发帖 555 积分 1,187 | |
Originally posted by hbby at 2007-9-15 10:39: 看看我写的这个 经我修改后,对你的要求符合不? http://www.cn-dos.net/forum/viewthread.php?tid=27926&fpage=1&highlight=%E6%9C%80%E5%90%8E%E4%B8%80%E8%A1%8C&page=2 17楼的代码! 另外,你原来的那个测试文本 经它测试已经成功! |
|
| 第11楼 terse | 发表于 2007-09-15 13:34 |
| 银牌会员 发帖 946 积分 2,404 | |
Originally posted by hbby at 2007-9-15 10:39: 这个应该是可以了! 试一下吧! @echo off cd.>test2.txt for /f "delims=:" %%i in ('findstr /n . test.txt') do set n=%%i set /a nm=%n% for /f "delims=" %%i in ('findstr /n .* test.txt') do ( set /a mn=%%i 2>nul set "m=%%i" setlocal enabledelayedexpansion set "m=!m:*:=!" if !nm! EQU !mn! goto end echo.!m!>>test2.txt endlocal ) :end pause [ Last edited by terse on 2007-9-15 at 01:35 PM ] |
|
| 第12楼 hbby | 发表于 2007-09-15 15:14 |
| 中级用户 发帖 99 积分 220 | |
|
高手真实个顶个的高,强手个顶个的强啊!非常感谢大家!
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |