中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-07-07 20:48
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 怎样替换文本的字符串(请肩膀上有星的都来看看)[已结] 查看 2,470 回复 18
楼 主 怎样替换文本的字符串(请肩膀上有星的都来看看)[已结] 发表于 2007-08-30 20:36 ·  中国 江西 抚州 电信
中级用户
★★
积分 220
发帖 99
注册 2005-08-16 01:08
20年会员
UID 41691
状态 离线
怎么样替换文本中的字符串

比如说,

*:\GHOSTSYS

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

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

请高手指教

[ Last edited by hbby on 2007-9-5 at 01:57 AM ]
2 发表于 2007-08-30 20:48 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
try this one:

C:\>set a=*:\GHOSTSYS

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

C:\>echo %b%
F:\GHOSTSYS
3 发表于 2007-08-30 20:53 ·  中国 江西 抚州 电信
中级用户
★★
积分 220
发帖 99
注册 2005-08-16 01:08
20年会员
UID 41691
状态 离线
老哥,*:\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 发表于 2007-08-31 15:45 ·  中国 江西 抚州 电信
中级用户
★★
积分 220
发帖 99
注册 2005-08-16 01:08
20年会员
UID 41691
状态 离线
我顶下,请有思路的朋友帮忙看看,谢谢
5 发表于 2007-08-31 16:24 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
把A到Z都替换一边。。没有其他的情况了吧?
6 发表于 2007-08-31 17:15 ·  中国 江西 抚州 电信
中级用户
★★
积分 220
发帖 99
注册 2005-08-16 01:08
20年会员
UID 41691
状态 离线
那代码多么不简练啊
7 发表于 2007-08-31 17:58 ·  中国 上海 联通
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
//那代码多么不简练啊

两个for循环应该可以搞定了
刚才试着写了一下
发现变量嵌套的地方老是有问题
看来要想融汇贯通变量嵌套还需要时日啊
等待学习高人的代码
8 发表于 2007-08-31 18:16 ·  中国 河北 廊坊 三河市 移动
金牌会员
★★★★
积分 2,725
发帖 1,160
注册 2006-09-23 12:00
19年会员
UID 63486
来自 河北廊坊
状态 离线
sed "s/[A-Z]:/F:/g" 1.txt
三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。
9 发表于 2007-08-31 18:53 ·  中国 江西 抚州 电信
中级用户
★★
积分 220
发帖 99
注册 2005-08-16 01:08
20年会员
UID 41691
状态 离线
最好用系统自己的命令,向各位高手学习!
10 发表于 2007-08-31 18:54 ·  中国 江西 抚州 电信
中级用户
★★
积分 220
发帖 99
注册 2005-08-16 01:08
20年会员
UID 41691
状态 离线
我用以下命令行只能替换指定代码,不能替换变量,高手看看怎么修改!
@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 发表于 2007-08-31 20:24 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
用个for
然后SET一个A-Z的字符串……
然后一个个推进FOR
12 发表于 2007-09-01 08:06 ·  中国 河北 廊坊 三河市 移动
金牌会员
★★★★
积分 2,725
发帖 1,160
注册 2006-09-23 12:00
19年会员
UID 63486
来自 河北廊坊
状态 离线
当你向前走一步就可以到达目的地的时候,你也可以选择向后转,绕地球一周再来。
这样,你看到了以前从所未见的美景,也因此浪费了自己的青春和其它美好的东西。
个中利弊,只有自己斟酌了。
三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。
13 发表于 2007-09-01 09:37 ·  中国 江西 抚州 电信
中级用户
★★
积分 220
发帖 99
注册 2005-08-16 01:08
20年会员
UID 41691
状态 离线
Originally posted by slore at 2007-8-31 20:24:
用个for
然后SET一个A-Z的字符串……
然后一个个推进FOR

具体点,代码应该怎么写呀?
14 发表于 2007-09-01 09:54 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
@echo off&&setlocal enabledelayedexpansion
Set DriverName=ABCDEFGH
for /l %%i in (0,1,7) do echo !DriverName:~%%i,1!
pause
15 发表于 2007-09-01 20:27 ·  中国 江西 抚州 电信
中级用户
★★
积分 220
发帖 99
注册 2005-08-16 01:08
20年会员
UID 41691
状态 离线
好象还是不行哦,能再具体点吗?谢谢
论坛跳转: