标题: [已结]替换文本中的指定字符并保留空行
[打印本页]
作者: pusofalse
时间: 2008-4-27 19:25
标题: [已结]替换文本中的指定字符并保留空行
刚刚做了一下试验,发现set出现问题了
a.txt的内容
1234
1234
dsf
fd
d
a
asd
这是我的代码,就是想替换a.txt中的所有d为m,并且保留空行
setlocal enabledelayedexpansion
for /f "tokens=*" %%a in ('findstr /n .* a.txt') do (
set str=%%a
set str=!str:*:=!
set str=!str:d=m!
echo.!str!
)
pause
我深知这代码输出的内容应该是:
1234
1234
msf
fm
m
a
asm
但是我的却显示
1234
1234
d=m
msf
fm
m
a
d=m
asm
T.T 哪里出毛病了啊?~ 高人指教! 以前也曾遇到过一回for截取字符串不正确的情况,重装系统之后好了,这回不会还要重装系统吧
原因看2楼和4楼~~
───────────────── 版务记录 ─────────────────
执行:HAT
操作:在帖子标题中增加搜索关键字
说明:原标题"不要犯同样的错误,关于set赋值"不利于论坛搜索
───────────────── 版务记录 ─────────────────
Last edited by HAT on 2008-11-9 at 00:10 ]
作者: lpk130
时间: 2008-4-27 19:40
setlocal enabledelayedexpansion
for /f "tokens=*" %%a in ('findstr /n .* a.txt') do (
set str=%%a
set str=!str:*:=!
set str=!str:d=m!
echo.!str!
)
pause
红色那句,当str为空的时候出错
@echo off&setlocal enabledelayedexpansion
for /f "tokens=*" %%a in ('findstr /n .* a.txt') do (
set str=%%a
set str=!str:*:=!
if defined str set str=!str:d=m!
echo.!str!
)
pause
作者: pusofalse
时间: 2008-4-27 19:46
Originally posted by lpk130 at 2008-4-27 07:40 PM:
setlocal enabledelayedexpansion
for /f "tokens=*" %%a in ('findstr /n .* a.txt') do (
set str=%%a
set str=!str:*:=!
set str=!str:d=m!
echo.!str!
)
pause
...
你的代码可是可以的,这样的话也能解决问题,但今天下午时我用我那个代码还是好好的,空行也保留着。。。不知为何~ 就用你这个吧~ 谢谢!
作者: pusofalse
时间: 2008-4-27 19:52
OK 我明白原因了,
在被替换之前,str的值始终不能为空,空的话就会出现我那种情况了,如果在替换之后再把:及其前的所有字符删除掉的话,就可以了~
setlocal enabledelayedexpansion
for /f "tokens=*" %%a in ('findstr /n .* a.txt') do (
set str=%%a
set str=!str:d=m!
set str=!str:*:=!
echo.!str!
)
pause
就像这样~~ 感谢lpk130!
作者: bat-zw
时间: 2008-4-27 21:47
标题: 建议尽量少使用findstr:
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in ('type a.txt') do (
set str=%%i
set str=!str:d=m!
echo.!str!
)
pause>nul
作者: plp626
时间: 2008-4-27 22:16
作者: plp626
时间: 2008-4-27 22:19
Originally posted by pusofalse at 2008-4-27 07:25 PM:
刚刚做了一下试验,发现set出现问题了
a.txt的内容
1234
1234
dsf
fd
d
a
asd
这是我的代码,就是想替换a.txt中的所有d为m,并且保留空行
setlocal ...
空字符再替换将非空
作者: ZJHJ
时间: 2008-4-27 22:25
这个我也遇到了.也是求高手解决的,
if not "!var!"==""