|
hbby
中级用户
  
积分 220
发帖 99
注册 2005-8-16
状态 离线
|
『楼 主』:
[已结]如何删除含有特殊字符文件的最后一行
原文件为:
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 ]
|
|
2007-9-14 11:01 |
|
|
ccwan
金牌会员
     
积分 2725
发帖 1160
注册 2006-9-23 来自 河北廊坊
状态 离线
|
『第
2 楼』:
findstr $ test.txt>backup.txt
|

三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。 |
|
2007-9-14 11:07 |
|
|
hbby
中级用户
  
积分 220
发帖 99
注册 2005-8-16
状态 离线
|
『第
3 楼』:
试过这个代码,可以删除最后一行,但是不可以叠加使用,如果再使用不能再删除倒数第二行
|
|
2007-9-14 11:12 |
|
|
ccwan
金牌会员
     
积分 2725
发帖 1160
注册 2006-9-23 来自 河北廊坊
状态 离线
|
|
2007-9-14 11:17 |
|
|
hbby
中级用户
  
积分 220
发帖 99
注册 2005-8-16
状态 离线
|
『第
5 楼』:
我昨天晚上就查到了这页,用的就是这页的代码,可是特殊字符解决不了,老大能帮忙修改下吗?谢谢
|
|
2007-9-14 11:20 |
|
|
ccwan
金牌会员
     
积分 2725
发帖 1160
注册 2006-9-23 来自 河北廊坊
状态 离线
|
『第
6 楼』:
@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
|

三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。 |
|
2007-9-14 11:41 |
|
|
terse
银牌会员
    
积分 2404
发帖 946
注册 2005-9-8
状态 离线
|
『第
7 楼』:
@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
|
|
2007-9-14 16:31 |
|
|
hbby
中级用户
  
积分 220
发帖 99
注册 2005-8-16
状态 离线
|
『第
8 楼』:
7楼的兄弟,非常感谢你的帮助,经我测试,此P处理用于删除自身内容的最后一行,文本内容会有变化,也就是说此P处理的本身还有特殊字符,还有更好的方法吗?
|
|
2007-9-15 10:39 |
|
|
qinbuer
高级用户
    我思故我在
积分 512
发帖 228
注册 2007-1-21
状态 离线
|
|
2007-9-15 11:26 |
|
|
scriptor
银牌会员
    
积分 1187
发帖 555
注册 2006-12-21
状态 离线
|
|
2007-9-15 12:52 |
|
|
terse
银牌会员
    
积分 2404
发帖 946
注册 2005-9-8
状态 离线
|
『第
11 楼』:
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 ]
|
|
2007-9-15 13:34 |
|
|
hbby
中级用户
  
积分 220
发帖 99
注册 2005-8-16
状态 离线
|
『第
12 楼』:
高手真实个顶个的高,强手个顶个的强啊!非常感谢大家!
|
|
2007-9-15 15:14 |
|