Board logo

标题: [已结]如何删除含有特殊字符文件的最后一行 [打印本页]

作者: hbby     时间: 2007-9-14 11:01    标题: [已结]如何删除含有特殊字符文件的最后一行

原文件为:
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 ]
作者: ccwan     时间: 2007-9-14 11:07
findstr $ test.txt>backup.txt
作者: hbby     时间: 2007-9-14 11:12
试过这个代码,可以删除最后一行,但是不可以叠加使用,如果再使用不能再删除倒数第二行
作者: ccwan     时间: 2007-9-14 11:17
http://www.cn-dos.net/forum/view ... E%E4%B8%80%E8%A1%8C

http://www.cn-dos.net/forum/view ... E%E4%B8%80%E8%A1%8C

看看有帮助吗
作者: hbby     时间: 2007-9-14 11:20
我昨天晚上就查到了这页,用的就是这页的代码,可是特殊字符解决不了,老大能帮忙修改下吗?谢谢
作者: ccwan     时间: 2007-9-14 11:41

@ECHO OFF
for /f "delims=:" %%i in ('findstr /n . test.txt') do set num=%%i
for /f "tokens=1* delims=:" %%i in ('findstr /n . test.txt') do if not "%%i"=="%num%" if not "%%j"=="" echo %%j>>backup.txt
pause

作者: terse     时间: 2007-9-14 16:31
@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
作者: hbby     时间: 2007-9-15 10:39
7楼的兄弟,非常感谢你的帮助,经我测试,此P处理用于删除自身内容的最后一行,文本内容会有变化,也就是说此P处理的本身还有特殊字符,还有更好的方法吗?
作者: qinbuer     时间: 2007-9-15 11:26
请查询以下连接:

http://www.cn-dos.net/forum/view ... 7%E9%99%90%E5%BA%A6
作者: scriptor     时间: 2007-9-15 12:52


  Quote:
Originally posted by hbby at 2007-9-15 10:39:
7楼的兄弟,非常感谢你的帮助,经我测试,此P处理用于删除自身内容的最后一行,文本内容会有变化,也就是说此P处理的本身还有特殊字符,还有更好的方法吗?

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

http://www.cn-dos.net/forum/view ... E8%A1%8C&page=2
17楼的代码!


另外,你原来的那个测试文本
经它测试已经成功!
作者: terse     时间: 2007-9-15 13:34


  Quote:
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 ]
作者: hbby     时间: 2007-9-15 15:14
高手真实个顶个的高,强手个顶个的强啊!非常感谢大家!