标题: [文本处理] [已解决]批处理进行文本内容字符串替换时冒号会消失? [打印本页]
作者: welky 时间: 2009-6-8 21:43 标题: [已解决]批处理进行文本内容字符串替换时冒号会消失?
- call :replace count wxwei Login.txt
- :replace
- for /f "tokens=1* delims=:" %%i in ('findstr /n .* %3') do (
- set str=%%j
- if not "!str!"=="" set "str=!str:%1=%2!"
- >>"Auto_tmp.txt" echo.!str!
- )
- move /y Auto_tmp.txt %3
- goto :eof
复制代码
Login.txt中的内容为:- This is a test for replace.
- username=count
- :Login
- Login code
- :Exit
- exit
- ::This is a test
复制代码
用上面的替换程序替换后结果为:- This is a test for replace.
- username=wxwei
- Login
- Login code
- Exit
- exit
- This is a test
复制代码
但希望得到的结果是- This is a test for replace.
- username=wxwei
- :Login
- Login code
- :Exit
- exit
- ::This is a test
复制代码
如何保留冒号?
谢谢
[ 本帖最后由 welky 于 2009-6-8 23:28 编辑 ]
作者: wjjy 时间: 2009-6-8 22:05 标题: 试试?
- (for /f "delims=" %%i in (login.txt) do (
- if not %%i==count echo %%i esle echo wxwei))>login.txt
复制代码
作者: welky 时间: 2009-6-8 22:29
原帖由 wjjy 于 2009-6-8 22:05 发表
(for /f "delims=" %%i in (login.txt) do (
if not %%i==count echo %%i esle echo wxwei))>login.txt
谢谢,试了下,但没有达到要求!
作者: fyb198351 时间: 2009-6-8 22:30
改了下.你再看下能行不- @echo off&setlocal enabledelayedexpansion
- for /f "tokens=*" %%i in (login.txt) do (
- set var=%%i
- set var=!var:count=wxwei!
- echo !var!>>login2.txt
- )
- del /q login.txt&ren login2.txt login.txt
复制代码
[ 本帖最后由 fyb198351 于 2009-6-8 22:55 编辑 ]
作者: welky 时间: 2009-6-8 22:33
原帖由 fyb198351 于 2009-6-8 22:30 发表
楼上的代码有几个地方错了@echo off
for /f "delims=" %%i in (login.txt) do (
if not %%i==count (echo %%i) else (
echo wxwei
)
)>>login1.txt
del /q login.txt&ren login1.t ...
count 可能不是在一行的开始,可以在一行的任意地方。
Sorry,没写清楚!
还是谢谢!
作者: wxcute 时间: 2009-6-8 22:54
- @echo off
- setlocal enabledelayedexpansion
- call :replace count wxwei Login.txt
-
- goto :eof
- :replace
- for /f "delims=" %%i in ('findstr /n .* %3') do (
- set str=%%i
- set "str=!str:*:=!"
- if not "!str!"=="" set "str=!str:%1=%2!"
- >>"Auto_tmp.txt" echo+!str!
- )
- :: >>"Auto_tmp.txt" echo+!str!
- move /y Auto_tmp.txt %3
- goto :eof
复制代码
[ 本帖最后由 wxcute 于 2009-6-8 22:59 编辑 ]
作者: 随风 时间: 2009-6-8 23:00 标题: 回复 5楼 的帖子
- @echo off
- call :replace count wxwei Login.txt
- :replace
- (for /f "delims=" %%i in ('findstr /n .* "%~3"') do (
- set "str=%%i"
- setlocal enabledelayedexpansion
- set "str=!str:*:=!"
- set "str=!str:%~1=%~2!"
- echo;!str!
- endlocal
- ))>Auto_tmp.txt
- move /y Auto_tmp.txt %3
- goto :eof
复制代码
作者: welky 时间: 2009-6-8 23:24
原帖由 wxcute 于 2009-6-8 22:54 发表
@echo off
setlocal enabledelayedexpansion
call :replace count wxwei Login.txt
goto :eof
:replace
for /f "delims=" %%i in ('findstr /n .* %3') do (
set str=%%i
set "str=!str:*:=!"
...
谢谢斑竹!
能实现想要的功能!
作者: welky 时间: 2009-6-8 23:27
原帖由 随风 于 2009-6-8 23:00 发表
@echo off
call :replace count wxwei Login.txt
:replace
(for /f "delims=" %%i in ('findstr /n .* "%~3"') do (
set "str=%%i"
setlocal enabledelayedexpansion
set "str=!str:*:=!"
se ...
谢谢超超级版主,你的不仅能保留冒号,连感叹号都能保留!
非常感谢各位。
结贴!
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |