楼 主
如何更改文本中某两个字符串之间的字符串
发表于 2007-09-29 10:08 · 中国 江苏 无锡 联通
初级用户
★★
积分 128 发帖 56 注册 2007-09-26 15:37 UID 98321 性别 男 来自 江苏 无锡
状态 离线
有一个文件内容如下:
.............
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 楼
发表于 2007-09-29 10:26 · 中国 天津 电信
银牌会员
★★★
积分 1,928 发帖 931 注册 2007-01-06 11:46 UID 75624 性别 男
状态 离线
set /p all=
sed "/source/ s/\(source=\).*$/\1%all%\"/" ab.txt
第 3 楼
发表于 2007-09-29 12:31 · 中国 江苏 无锡 联通
初级用户
★★
积分 128 发帖 56 注册 2007-09-26 15:37 UID 98321 性别 男 来自 江苏 无锡
状态 离线
大哥,好象不行呀
报错:
sed 不是内部或外部命令,也不是可运行的程序
我是菜鸟我怕谁
第 4 楼
发表于 2007-09-29 12:32 · 中国 天津 电信
银牌会员
★★★
积分 1,928 发帖 931 注册 2007-01-06 11:46 UID 75624 性别 男
状态 离线
第 5 楼
发表于 2007-09-29 12:34 · 中国 江苏 无锡 联通
初级用户
★★
积分 128 发帖 56 注册 2007-09-26 15:37 UID 98321 性别 男 来自 江苏 无锡
状态 离线
第 6 楼
发表于 2007-09-29 12:38 · 中国 江苏 无锡 联通
初级用户
★★
积分 128 发帖 56 注册 2007-09-26 15:37 UID 98321 性别 男 来自 江苏 无锡
状态 离线
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 楼
发表于 2007-09-29 12:45 · 中国 江苏 无锡 联通
初级用户
★★
积分 128 发帖 56 注册 2007-09-26 15:37 UID 98321 性别 男 来自 江苏 无锡
状态 离线
帮帮我,help me ,please!!!
我是菜鸟我怕谁
第 8 楼
发表于 2007-09-29 13:12 · 中国 天津 电信
银牌会员
★★★
积分 1,928 发帖 931 注册 2007-01-06 11:46 UID 75624 性别 男
状态 离线
。。
[ Last edited by wudixin96 on 2007-9-29 at 01:51 PM ]
第 9 楼
发表于 2007-09-29 13:18 · 中国 江苏 无锡 联通
初级用户
★★
积分 128 发帖 56 注册 2007-09-26 15:37 UID 98321 性别 男 来自 江苏 无锡
状态 离线
很感激这个大哥!
不过似乎那个文件的内容并没有改变啊,我是菜鸟,别介意我这么麻烦啊
我是菜鸟我怕谁
第 10 楼
发表于 2007-09-29 13:22 · 中国 天津 电信
银牌会员
★★★
积分 1,928 发帖 931 注册 2007-01-06 11:46 UID 75624 性别 男
状态 离线
@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 楼
发表于 2007-09-29 13:42 · 中国 江苏 无锡 联通
初级用户
★★
积分 128 发帖 56 注册 2007-09-26 15:37 UID 98321 性别 男 来自 江苏 无锡
状态 离线
感谢这位大哥,你是好人纳,好人一生平安!
我是菜鸟我怕谁
第 12 楼
发表于 2007-09-29 13:50 · 中国 天津 电信
银牌会员
★★★
积分 1,928 发帖 931 注册 2007-01-06 11:46 UID 75624 性别 男
状态 离线
@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 楼
发表于 2007-09-29 17:43 · 中国 江苏 无锡 联通
初级用户
★★
积分 128 发帖 56 注册 2007-09-26 15:37 UID 98321 性别 男 来自 江苏 无锡
状态 离线
我又来了,能解决问题我就很感激了
我想问,我把in (ba.txt)换成in(2005\ba.txt)就不行了呢,说找不到路径
我是菜鸟我怕谁
第 14 楼
发表于 2007-09-29 18:10 · 中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268 发帖 879 注册 2006-12-19 16:23 UID 73968 性别 男
状态 离线
2005\ab.txt要写绝对路径
@echo off
set /p rep=请输入替换的字符:
setlocal EnableDelayedExpansion
for /f "delims=" %%a in (c:\2005\ab.txt) do (
set var=%%a
set num=!var:*source=!
call set str=%%var:!num:~1!=%%
echo !str!!rep!"
)
pause
[
Last edited by 26933062 on 2007-9-29 at 06:15 PM ]
致精致简!
第 15 楼
发表于 2007-09-29 18:20 · 中国 天津 电信
银牌会员
★★★
积分 1,928 发帖 931 注册 2007-01-06 11:46 UID 75624 性别 男
状态 离线
26933062
你这样会在没有source行后面也加上替换的字符的。
请输入替换的字符:haha
lpru=pru%tt=haha"
myfile1="a=%1;b=2;c=3;source=haha"
myfile2="a%=1;b=2;c=3;source=haha"
rhou=hou%rr=haha"
请按任意键继续. . .
论坛跳转:
— 请选择 —
站务公告 & 版主讨论
意见反馈 & 网友交流
DOS学习入门 & 精彩文章 (教学室)
DOS疑难解答 & 问题讨论 (解答室)
DOS启动盘 & LOGO技术 (启动盘室)
DOS批处理 & 脚本技术(批处理室)
DOS媒体世界 & 网络技术 (多媒体室)
DOS汉化世界 & 中文系统 (中文化室)
DOS开发编程 & 发展交流 (开发室)
DOS软件下载 & 游戏分享 (下载室)
GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区
其它操作系统综合讨论区
WinPE、PowerShell及其它命令行系统专区
贴图灌水、文学娱乐专区
网络日志(Blog)
论坛回收站
├ 链接失效,待修正