中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-05 18:41
48,039 主题排行 / 350,124 发帖 / 今日 2 篇 / 48,251 会员排行
DOS批处理 & 脚本技术(批处理室) » 怎样替换文本的字符串(请肩膀上有星的都来看看)[已结]
可打印版本  2,596 / 18
第1楼 hbby 发表于 2007-08-30 20:36
中级用户 发帖 99 积分 220
怎样替换文本的字符串(请肩膀上有星的都来看看)[已结]
怎么样替换文本中的字符串

比如说,

*:\GHOSTSYS

(*代表任意字符,可替换的字符)

我要寻找:\GHOSTSYS,不管*的数字是什么,我要替换它为F。

请高手指教

[ Last edited by hbby on 2007-9-5 at 01:57 AM ]
第2楼 HAT 发表于 2007-08-30 20:48
版主 发帖 5,017 积分 9,023
try this one:

C:\>set a=*:\GHOSTSYS

C:\>set b=F%a:~-10%

C:\>echo %b%
F:\GHOSTSYS
第3楼 hbby 发表于 2007-08-30 20:53
中级用户 发帖 99 积分 220
老哥,*:\GHOSTSYS是在一个文本文件里面,*号是任意字母,如何替换,还请明示,谢谢!

文本内容如下:
IF NOT EXIST D:\GHOSTSYS\NUL MD D:\GHOSTSYS
IF NOT EXIST E:\GHOSTSYS\NUL MD E:\GHOSTSYS
或者是其他字母,*是个变量

[ Last edited by hbby on 2007-8-30 at 08:55 PM ]
第4楼 hbby 发表于 2007-08-31 15:45
中级用户 发帖 99 积分 220
我顶下,请有思路的朋友帮忙看看,谢谢
第5楼 slore 发表于 2007-08-31 16:24
铂金会员 发帖 2,478 积分 5,212
把A到Z都替换一边。。没有其他的情况了吧?
第6楼 hbby 发表于 2007-08-31 17:15
中级用户 发帖 99 积分 220
那代码多么不简练啊
第7楼 HAT 发表于 2007-08-31 17:58
版主 发帖 5,017 积分 9,023
//那代码多么不简练啊

两个for循环应该可以搞定了
刚才试着写了一下
发现变量嵌套的地方老是有问题
看来要想融汇贯通变量嵌套还需要时日啊
等待学习高人的代码
第8楼 ccwan 发表于 2007-08-31 18:16
金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊
sed "s/[A-Z]:/F:/g" 1.txt
第9楼 hbby 发表于 2007-08-31 18:53
中级用户 发帖 99 积分 220
最好用系统自己的命令,向各位高手学习!
第10楼 hbby 发表于 2007-08-31 18:54
中级用户 发帖 99 积分 220
我用以下命令行只能替换指定代码,不能替换变量,高手看看怎么修改!
@echo off
set /p a=请输入驱动器号(不包含:):
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in (1.txt) do set "n=%%i"&&set n=!n:d:\GHOSTSYS=%a%:\GHOSTSYS!&&echo !n!>>2.txt
第11楼 slore 发表于 2007-08-31 20:24
铂金会员 发帖 2,478 积分 5,212
用个for
然后SET一个A-Z的字符串……
然后一个个推进FOR
第12楼 ccwan 发表于 2007-09-01 08:06
金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊
当你向前走一步就可以到达目的地的时候,你也可以选择向后转,绕地球一周再来。
这样,你看到了以前从所未见的美景,也因此浪费了自己的青春和其它美好的东西。
个中利弊,只有自己斟酌了。
第13楼 hbby 发表于 2007-09-01 09:37
中级用户 发帖 99 积分 220
Originally posted by slore at 2007-8-31 20:24:
用个for
然后SET一个A-Z的字符串……
然后一个个推进FOR

具体点,代码应该怎么写呀?
第14楼 slore 发表于 2007-09-01 09:54
铂金会员 发帖 2,478 积分 5,212
@echo off&&setlocal enabledelayedexpansion
Set DriverName=ABCDEFGH
for /l %%i in (0,1,7) do echo !DriverName:~%%i,1!
pause
第15楼 hbby 发表于 2007-09-01 20:27
中级用户 发帖 99 积分 220
好象还是不行哦,能再具体点吗?谢谢
1 2  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023