中国DOS联盟论坛

中国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:
7楼的兄弟,非常感谢你的帮助,经我测试,此P处理用于删除自身内容的最后一行,文本内容会有变化,也就是说此P处理的本身还有特殊字符,还有更好的方法吗?



看看我写的这个
经我修改后,对你的要求符合不?

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:
7楼的兄弟,非常感谢你的帮助,经我测试,此P处理用于删除自身内容的最后一行,文本内容会有变化,也就是说此P处理的本身还有特殊字符,还有更好的方法吗?


这个应该是可以了! 试一下吧!

@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