![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-06 01:06 |
共 48,039 主题排行 / 350,124 发帖 / 今日 2 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 如何更改文本中某两个字符串之间的字符串 |
| 可打印版本 1,999 / 16 |
| 第1楼 yyf0346 | 发表于 2007-09-29 10:08 |
| 初级用户 发帖 56 积分 128 来自 江苏 无锡 | |
|
如何更改文本中某两个字符串之间的字符串 有一个文件内容如下:
............. myfile1="a=1;b=2;c=3;source=test1" latest=prut myfile2="a=1;b=2;c=3;source=test2" resue=hour ................... 如何把source=后边的字符换成指定字符呢?指定字符是根据用户输入的参数 set /p all= 替换字符 更改后的文本如下 ............. myfile1="a=1;b=2;c=3;source=替换字符" latest=prut myfile2="a=1;b=2;c=3;source=替换字符" resue=hour ................... |
|
| 第2楼 wudixin96 | 发表于 2007-09-29 10:26 |
| 银牌会员 发帖 931 积分 1,928 | |
|
set /p all=
sed "/source/ s/\(source=\).*$/\1%all%\"/" ab.txt |
|
| 第3楼 yyf0346 | 发表于 2007-09-29 12:31 |
| 初级用户 发帖 56 积分 128 来自 江苏 无锡 | |
|
大哥,好象不行呀
报错: sed 不是内部或外部命令,也不是可运行的程序 |
|
| 第4楼 wudixin96 | 发表于 2007-09-29 12:32 |
| 银牌会员 发帖 931 积分 1,928 | |
|
哎,又忘说了,需要下载sed工具的,论坛里似乎有
|
|
| 第5楼 yyf0346 | 发表于 2007-09-29 12:34 |
| 初级用户 发帖 56 积分 128 来自 江苏 无锡 | |
|
大虾,能不能不用那个工具呢?
|
|
| 第6楼 yyf0346 | 发表于 2007-09-29 12:38 |
| 初级用户 发帖 56 积分 128 来自 江苏 无锡 | |
|
set file=INI\INIDM_SERVER.INI
set "file=%file:"=%" for %%i in ("%file%") do set file=%%~fi set replaced=wxhx echo. set all= set /p all= 请输入替换字符串: for /f "delims=" %%i in ('type "%file%"') do ( set str=%%i set "str=!str:%replaced%=%all%!" echo !str!>>"%file%"_tmp.txt ) copy "%file%" "%file%"_bak.txt >nul 2>nul move "%file%"_tmp.txt "%file%" 这是上次一位大虾给我的,这个可以更改指定字符串,但是第二次要更改的时候就不灵了,所一我想更改source=和"之间的字符串,这位大哥你看能行不? |
|
| 第7楼 yyf0346 | 发表于 2007-09-29 12:45 |
| 初级用户 发帖 56 积分 128 来自 江苏 无锡 | |
|
帮帮我,help me ,please!!!
|
|
| 第8楼 wudixin96 | 发表于 2007-09-29 13:12 |
| 银牌会员 发帖 931 积分 1,928 | |
|
。。
[ Last edited by wudixin96 on 2007-9-29 at 01:51 PM ] |
|
| 第9楼 yyf0346 | 发表于 2007-09-29 13:18 |
| 初级用户 发帖 56 积分 128 来自 江苏 无锡 | |
|
很感激这个大哥!
不过似乎那个文件的内容并没有改变啊,我是菜鸟,别介意我这么麻烦啊 |
|
| 第10楼 wudixin96 | 发表于 2007-09-29 13:22 |
| 银牌会员 发帖 931 积分 1,928 | |
|
@echo off
set /p rep=请输入替换的字符: for /f "delims=" %%i in (ab.txt) do ( set "str=%%i" set "str1=%%i" call :replace ) del /q ab.txt ren ab_tmp.txt ab.txt pause goto :eof :replace set str=%str:*source=% echo %str1%|find /i "source">nul&&call set str1=%%str1:%str:~1%=%rep%"%% echo %str1%>>ab_tmp.txt |
|
| 第11楼 yyf0346 | 发表于 2007-09-29 13:42 |
| 初级用户 发帖 56 积分 128 来自 江苏 无锡 | |
|
感谢这位大哥,你是好人纳,好人一生平安!
|
|
| 第12楼 wudixin96 | 发表于 2007-09-29 13:50 |
| 银牌会员 发帖 931 积分 1,928 | |
|
@echo off
set /p rep=请输入替换的字符: for /f "delims=" %%i in (ab.txt) do ( set fl=0 set "str=%%i" set "str1=%%i" call :replace ) pause goto :eof :replace set "str=%str:*source=%"&&set fl=1 if %fl%==0 call set str1=%%str1:%str:~1,-1%=%rep%%% echo %str1% 这个效率高些 |
|
| 第13楼 yyf0346 | 发表于 2007-09-29 17:43 |
| 初级用户 发帖 56 积分 128 来自 江苏 无锡 | |
|
我又来了,能解决问题我就很感激了
我想问,我把in (ba.txt)换成in(2005\ba.txt)就不行了呢,说找不到路径 |
|
| 第14楼 26933062 | 发表于 2007-09-29 18:10 |
| 银牌会员 发帖 879 积分 2,268 | |
|
2005\ab.txt要写绝对路径
[ Last edited by 26933062 on 2007-9-29 at 06:15 PM ] |
|
| 第15楼 wudixin96 | 发表于 2007-09-29 18:20 |
| 银牌会员 发帖 931 积分 1,928 | |
|
26933062
你这样会在没有source行后面也加上替换的字符的。 请输入替换的字符:haha |
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |