|
terlutor
新手上路
积分 8
发帖 8
注册 2008-10-16
状态 离线
|
『楼 主』:
[已结]请求一个替换文本的批处理!
我有一个这样的文本文件123.txt:(注:“----------”线是我另外加上去的,不在文件中的!)
----------
@13-OCT-08 23:14:54
SHORT_VCC18_DDR2=3.762221(2,)R
R199>8.361087K(8.5K,10.872K)R
~R199(R199)
EXPECTED ACTUAL
200103-107|T:X10400:Y11075|10.KO,1pct
~
=200103-107|T:X10400:Y11075|10.KO,1pct
~CHAN A/E: OP_P2
CHAN C/G/GND: GND[3],VCC_12V[123]
~
R190=1.026289K(3,1.241K)R
PS_OPEN=(-20M,20M)V
~
13-OCT-08 23:16:21
BOARD E24 FAILED
~
/13-OCT-08 23:16:21
----------
我想用一个批处理把它变成下面的样子,如下:
----------
@13-OCT-08 23:14:54
SHORT_VCC18_DDR2=3.762221(2,)R
R199>8.361087K(8.5K,10.872K)R
R199(R199)
EXPECTED ACTUAL
200103-107|T:X10400:Y11075|10.KO,1pct
=200103-107|T:X10400:Y11075|10.KO,1pct
CHAN A/E: OP_P2
CHAN C/G/GND: GND[3],VCC_12V[123]
R190=1.026289K(3,1.241K)R
PS_OPEN=(-20M,20M)V
13-OCT-08 23:16:21
----------
请问各位大虾,批处理能实现吗?另外文本的行数是不固定的,文本中日期和时间也是随机的,文本中间部分只要去掉“~”就可以了,文本最后7行样式是不变的,变的只是时间和日期,也只要保留时间和日期就可以了!
谢谢大家了!!!
我再用图片补充说明一下,下图中蓝色部分的字符就是我要删除的:
谢谢大家的帮忙!
[ Last edited by HAT on 2008-10-27 at 09:38 ]
|
|
2008-10-16 05:36 |
|
|
moniuming
银牌会员
永远的菜鸟
积分 1335
发帖 574
注册 2007-11-27 来自 广西
状态 离线
|
『第
2 楼』:
findstr /v ~ 123.txt 不知道楼主说的最后7行是哪7行.
|
|
2008-10-16 09:31 |
|
|
terlutor
新手上路
积分 8
发帖 8
注册 2008-10-16
状态 离线
|
『第
3 楼』:
Quote: | Originally posted by moniuming at 2008-10-16 09:31:
findstr /v ~ 123.txt 不知道楼主说的最后7行是哪7行. |
|
首先谢谢你的关注!
我指的7行是:
~
13-OCT-08 23:16:21
BOARD E24 FAILED
~
/13-OCT-08 23:16:21
可能我表达得不是很清楚,我的意思是这7行只留下日期和时间,其它的全部删除!原贴上部分是原文件,下部分就是我要的结果。可能我的解释有点画蛇添足,倒把人弄糊涂了!
|
|
2008-10-17 00:33 |
|
|
ko20010214
版主
积分 7294
发帖 1628
注册 2002-10-16
状态 离线
|
『第
4 楼』:
查找 ~ 用空格来替代它就可以吧?
change 123.txt /form ~ /to " "
change 这个软件在论坛里有。
|
ko20010214
=================================
大功告成,打个Kiss!
ko20010214@MSN.com
神州优雅Q300C
Intel CeleronM 370处理器 | 256MbDDR内存
40G硬盘 | USB2.0 | IEEE 1394
13.3 ' WXGA 宽屏(16:10) | COMBO光驱
10/100M网卡 | 四合一读卡器
|
|
2008-10-17 00:53 |
|
|
terlutor
新手上路
积分 8
发帖 8
注册 2008-10-16
状态 离线
|
『第
5 楼』:
Quote: | Originally posted by ko20010214 at 2008-10-17 00:53:
查找 ~ 用空格来替代它就可以吧?
change 123.txt /form ~ /to " "
change 这个软件在论坛里有。 |
|
谢谢,我试一下看行不行吧!不过我只想用一个批处理来完成!
|
|
2008-10-18 04:06 |
|
|
HAT
版主
积分 9023
发帖 5017
注册 2007-5-31
状态 离线
|
『第
6 楼』:
@echo off
type nul>"%temp%\123_tmp.txt"
for /f "delims=:" %%a in ('findstr /n .* "123.txt"') do (
set RowNum=%%a
)
set /a TarRow=RowNum-7
for /f "tokens=1* delims=:" %%a in ('findstr /n .* "123.txt"') do (
if %%a leq %TarRow% (
set "str=%%b"
setlocal enabledelayedexpansion
if "!str:~0,1!" equ "~" (
echo.!str:~1!>>"%temp%\123_tmp.txt"
) else (
echo.!str!>>"%temp%\123_tmp.txt"
)
endlocal
)
)
findstr "^[0-1][0-9]-[A-Z][A-Z][A-Z]-[0-9][0-9]" "123.txt">>"%temp%\123_tmp.txt"
move /y "%temp%\123_tmp.txt" "123.txt" [ Last edited by HAT on 2008-10-18 at 13:11 ]
|
|
|
2008-10-18 12:37 |
|
|
terse
银牌会员
积分 2404
发帖 946
注册 2005-9-8
状态 离线
|
『第
7 楼』:
@echo off
cd.>b.txt
for /f "delims=" %%i in ('type "a.txt"^|find /v /c ""') do set /a n=%%i-5
for /f "tokens=1* delims=:" %%i in ('findstr /n .* a.txt') do (
setlocal enabledelayedexpansion
if not "%%j"=="" (
set str=%%j
set str=!str:*^~=!
>>b.txt echo.!str!
if %%i equ %n% start b.txt&goto :eof
)else >>b.txt echo.
)
pause
|
简单!简单!再简单! |
|
2008-10-18 12:50 |
|
|
terlutor
新手上路
积分 8
发帖 8
注册 2008-10-16
状态 离线
|
『第
8 楼』:
Quote: | Originally posted by HAT at 2008-10-18 12:37:
[code]@echo off
type nul>"%temp%\123_tmp.txt"
for /f "delims=:" %%a in ('findstr /n .* "123.txt"') do (
set RowNum=%%a
)
set /a TarRow=RowNum-7
for /f " ... |
|
非常感谢!
但是还是有一点小小的问题,我想把文本最后框中的字符也删除掉,如下图:
那么代码应该怎么修改一下呢?谢谢!
|
|
2008-10-19 04:22 |
|
|
terlutor
新手上路
积分 8
发帖 8
注册 2008-10-16
状态 离线
|
『第
9 楼』:
Quote: | Originally posted by terse at 2008-10-18 12:50:
[code]
@echo off
cd.>b.txt
for /f "delims=" %%i in ('type "a.txt"^|find /v /c ""') do set /a n=%%i-5
for /f "tokens=1* delims=:" %%i in ('findstr ... |
|
非常感谢!
但是还是有一点小小的问题,我想把文本最后框中的字符和最后一行那个“/”也删除掉,如下图:
另外在运行的时候会出现很多行“已经达到最大的 setlocal 递归层。”这句话,是不是我的文件太大(有90K,几千行),我原贴中我简化了的,那么代码应该怎么修改一下呢?自己太菜了,你的代码我还看不太懂,要慢慢研究一下,谢谢!
|
|
2008-10-19 04:34 |
|
|
HAT
版主
积分 9023
发帖 5017
注册 2007-5-31
状态 离线
|
『第
10 楼』:
Re 8楼
请在顶楼把自己的问题一次性描述清楚
|
|
|
2008-10-19 11:47 |
|
|
HAT
版主
积分 9023
发帖 5017
注册 2007-5-31
状态 离线
|
『第
11 楼』:
Re 9楼
参照6楼,给7楼的代码在合适的地方加上一句:
endlocal
|
|
|
2008-10-19 11:48 |
|
|
terlutor
新手上路
积分 8
发帖 8
注册 2008-10-16
状态 离线
|
『第
12 楼』:
Quote: | Originally posted by HAT at 2008-10-19 11:47:
请在顶楼把自己的问题一次性描述清楚 |
|
谢谢你的关注!我已在顶楼加上了图片说明!请你再帮帮忙!谢谢!
|
|
2008-10-20 23:07 |
|
|
terse
银牌会员
积分 2404
发帖 946
注册 2005-9-8
状态 离线
|
『第
13 楼』:
@echo off&setlocal enabledelayedexpansion
echo.1>nul 3>b.txt
for /f "tokens=1* delims=:" %%i in ('findstr /n .* "a.txt"') do (
set/a n=%%i-7
if not "%%j"=="" set var=%%j
)
for /f "tokens=1* delims=:" %%i in ('findstr /n .* "a.txt"') do (
if not "%%j"=="" (
set str=%%j
set str=!str:*^~=!
echo.!str!
if %%i equ %n% echo !var:~1!&goto end
)else echo.
)
:end
start notepad "b.txt"&exit
|
简单!简单!再简单! |
|
2008-10-21 00:42 |
|
|
terlutor
新手上路
积分 8
发帖 8
注册 2008-10-16
状态 离线
|
『第
14 楼』:
Quote: | Originally posted by terse at 2008-10-21 00:42:
[code]
@echo off&setlocal enabledelayedexpansion
echo.1>nul 3>b.txt
for /f "tokens=1* delims=:" %%i in ('findstr /n .* "a.txt"') do (
set/a n=%%i-7
if n ... |
|
谢谢!Thank you very much!
非常感谢!这正是我想要的!可惜我水平不高,看不太懂!回头要好好研究研究了!这里还真是高手如云!佩服佩服!
|
|
2008-10-22 03:21 |
|
|
HAT
版主
积分 9023
发帖 5017
注册 2007-5-31
状态 离线
|
『第
15 楼』:
Re 14楼
Good luck! And enjoy your time in CN-DOS!
|
|
|
2008-10-22 09:53 |
|