标题: 怎样替换文本的字符串(请肩膀上有星的都来看看)[已结]
[打印本页]
作者: hbby
时间: 2007-8-30 20:36
标题: 怎样替换文本的字符串(请肩膀上有星的都来看看)[已结]
怎么样替换文本中的字符串
比如说,
*:\GHOSTSYS
(*代表任意字符,可替换的字符)
我要寻找:\GHOSTSYS,不管*的数字是什么,我要替换它为F。
请高手指教
[
Last edited by hbby on 2007-9-5 at 01:57 AM ]
作者: HAT
时间: 2007-8-30 20:48
try this one:
Quote: |
C:\>set a=*:\GHOSTSYS
C:\>set b=F%a:~-10%
C:\>echo %b%
F:\GHOSTSYS |
|
作者: hbby
时间: 2007-8-30 20:53
老哥,*:\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 ]
作者: hbby
时间: 2007-8-31 15:45
我顶下,请有思路的朋友帮忙看看,谢谢
作者: slore
时间: 2007-8-31 16:24
把A到Z都替换一边。。没有其他的情况了吧?
作者: hbby
时间: 2007-8-31 17:15
那代码多么不简练啊
作者: HAT
时间: 2007-8-31 17:58
//那代码多么不简练啊
两个for循环应该可以搞定了
刚才试着写了一下
发现变量嵌套的地方老是有问题
看来要想融汇贯通变量嵌套还需要时日啊
等待学习高人的代码
作者: ccwan
时间: 2007-8-31 18:16
sed "s/[A-Z]:/F:/g" 1.txt
作者: hbby
时间: 2007-8-31 18:53
最好用系统自己的命令,向各位高手学习!
作者: hbby
时间: 2007-8-31 18:54
我用以下命令行只能替换指定代码,不能替换变量,高手看看怎么修改!
@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
作者: slore
时间: 2007-8-31 20:24
用个for
然后SET一个A-Z的字符串……
然后一个个推进FOR
作者: ccwan
时间: 2007-9-1 08:06
当你向前走一步就可以到达目的地的时候,你也可以选择向后转,绕地球一周再来。
这样,你看到了以前从所未见的美景,也因此浪费了自己的青春和其它美好的东西。
个中利弊,只有自己斟酌了。
作者: hbby
时间: 2007-9-1 09:37
Quote: |
Originally posted by slore at 2007-8-31 20:24:
用个for
然后SET一个A-Z的字符串……
然后一个个推进FOR |
|
具体点,代码应该怎么写呀?
作者: slore
时间: 2007-9-1 09:54
@echo off&&setlocal enabledelayedexpansion
Set DriverName=ABCDEFGH
for /l %%i in (0,1,7) do echo !DriverName:~%%i,1!
pause
作者: hbby
时间: 2007-9-1 20:27
好象还是不行哦,能再具体点吗?谢谢
作者: terse
时间: 2007-9-2 13:30
@echo off&setlocal enabledelayedexpansion
for %%a in (c d e g h i j k l m n o p q) do (
for /f "tokens=*" %%i in (test.txt) do (
set "n=%%i"
set n=!n:%%a:\GHOSTSYS=f:\GHOSTSYS!
if !n! NEQ %%i echo !n!>>test2.txt
)
)
作者: hbby
时间: 2007-9-3 09:47
16楼的老兄,还是不行哦
我的原文件是
@ECHO OFF
GOTO %CONFIG%
:RECOVER
PATH C:\DOSTOOLS;C:\DOSTOOLS\COMMAND
SET TEMP=C:\DOSTOOLS\TEMP
LH DOSTOOLS\COMMAND\DOSKEY
LH DOSTOOLS\COMMAND\MOUSE
LH DOSTOOLS\SMARTDRV.EXE
C:\DOSTOOLS\GHOST -CLONE,MODE=PLOAD,SRC=D:\GHOSTSYS\SYSTEM.GHO:1,DST=1:1 -SURE -RB
GOTO END
:BACKUP
PATH C:\DOSTOOLS;C:\DOSTOOLS\COMMAND
SET TEMP=C:\DOSTOOLS\TEMP
LH DOSTOOLS\COMMAND\DOSKEY
LH DOSTOOLS\COMMAND\MOUSE
LH DOSTOOLS\SMARTDRV.EXE
IF NOT EXIST D:\GHOSTSYS\NUL MD D:\GHOSTSYS
C:\DOSTOOLS\GHOST -Z9 -CLONE,MODE=PDUMP,SRC=1:1,DST=D:\GHOSTSYS\SYSTEM.GHO -SURE -FX
ATTRIB +A +S +H +R D:\GHOSTSYS
WIN /Z
GOTO END
:TOOLS
SET EXPAND=YES
SET DIRCMD=/O:N
SET LGLDRV=27 * 26 Z 25 Y 24 X 23 W 22 V 21 U 20 T 19 S 18 R 17 Q 16 P 15
SET LGLDRV=%LGLDRV% O 14 N 13 M 12 L 11 K 10 J 9 I 8 H 7 G 6 F 5 E 4 D 3 C
CALL DOSTOOLS\SETRAMD.BAT %LGLDRV%
PATH %RAMD%:\DOSTOOLS;%RAMD%:\DOSTOOLS\COMMAND;%CDROM%:\
MKDIR %RAMD%:\DOSTOOLS
MKDIR %RAMD%:\DOSTOOLS\COMMAND
DOSTOOLS\COMMAND\ATTRIB -A -S -H -R \COMMAND.COM
COPY COMMAND.COM %RAMD%:\>NUL
DOSTOOLS\COMMAND\ATTRIB +A +S +H +R \COMMAND.COM
COPY DOSTOOLS\*.* %RAMD%:\DOSTOOLS>NUL
COPY DOSTOOLS\COMMAND\*.* %RAMD%:\DOSTOOLS\COMMAND>NUL
MKDIR %RAMD%:\DOSTOOLS\TEMP
SET TEMP=%RAMD%:\DOSTOOLS\TEMP
SET TMP=%RAMD%:\DOSTOOLS\TEMP
LH DOSTOOLS\COMMAND\DOSKEY
LH DOSTOOLS\COMMAND\MOUSE
LH DOSTOOLS\COMMAND\MSCDEX /D:ECSCD003 /E
LH DOSTOOLS\SMARTDRV.EXE
SET COMSPEC=%RAMD%:\COMMAND.COM
SET CDROM=
SET LGLDRV=
:END
请问怎么替换:\GHOSTSYS前面的盘符啊?谢谢
作者: slore
时间: 2007-9-3 11:58
注意你的套嵌顺序!
@echo off&setlocal enabledelayedexpansion
for /f "tokens=*" %%i in (test.txt) do (
set "n=%%i"
for %%a in (c d e g h i j k l m n o p q) do (
set n=!n:%%a:\GHOSTSYS=F:\GHOSTSYS!
)
echo !n!>>test2.txt
)
作者: hbby
时间: 2007-9-5 01:55
谢谢各位大哥的解答,18楼是正解!已经OK了