Board logo

标题: 如何取得指定字符后边的字符串 [打印本页]

作者: yyf0346     时间: 2007-9-29 18:04    标题: 如何取得指定字符后边的字符串

SET  a=abcdefg\mystring
如何取得‘\’后边的字符串呢?并返回参数
作者: wudixin96     时间: 2007-9-29 18:06
???刚才不是回答了吗??
作者: yyf0346     时间: 2007-9-29 18:13
不好意思,那个好象很复杂啊,不是很理解,我想要返回个参数就又就不对了
作者: wudixin96     时间: 2007-9-29 18:14
SET  a=abcdefg\mystring

返回参数??什么意思????
作者: yyf0346     时间: 2007-9-29 18:17
就是echo %b%
%b%就是‘\’后边的字符,这样我就知道代码的断点了啊,知道他在哪个地方取得值了,要不一群字符看不会啊
作者: yyf0346     时间: 2007-9-29 18:25
SET  /P a=输入字符:
假如输入的字符是abdcddf\mastring
那么如何取的'\'后边的字符串并且显示出来
我是这个意思
作者: wudixin96     时间: 2007-9-29 18:26
SET  a=abcdefg\mystring
set b=%a:*\=%
echo %b%
pause


这个意思???
作者: 26933062     时间: 2007-9-29 18:30
显示最后一级\后的内容.
@echo off
set var=abc\sss\kkkk\dkfa dskf\1212 3434
:lis
set var=%var:*\=%
set num=%var:\=%
if not "%var%"=="%num%" (goto lis) else echo %var%
pause

作者: yyf0346     时间: 2007-9-29 19:05
谢谢你wudixin  你给的的确是我要的意思
也谢谢你26933062
其实我很头疼,字符串的处理用批处理做起来有时候真的是眼花缭乱啊
比如文件myfile.txt文件内容如下:
..........
..........
asdfasdfkasdf = N'sdfsdf'
..........
..........
( NAME = N'HXGL_Data', FILENAME = N'a\c\b\d\e\DATA\hxyyt',ff=gg)
lgo  tho
( NAME = N'HXGL_DB', FILENAME = N'a\c\b\d\e\DATA\hxtar',uu=yy)
.......
.......
省略号是省略的内容,你们看,我想要把里面的 a\c\b\d\e 换成我输入的参数值,可是这里面的干扰字符很多,我很难判断,其实我前面问你们的那些问题就是想要解决这个问题,可是现实并不象我想得那么简单啊,你们看,里面还有一些空格,还有大小写的问题让我很头疼........无从下手,

我前面问的替换两个字符串之间的字符,你们帮我解决了,我用到这里,可是N'字符不是唯一的两个,你们看前面也有N',取FILENAME = N'和\DATA之间的字符,可是FILENAME = N'字符串有空格呀,

有什么办法能解决吗?如果我知道那两段字符所在行比如说是第7和第9行,FILENAME字符只有这两个,能解决吗?
作者: yyf0346     时间: 2007-9-29 19:15
而且我要实现确实更改了文件的内容,也就是说找到指定的字符串更改后还要写回原文件,这个我也参考了你么给的方案,我以为换几个地方就可以了的,不过......
作者: 26933062     时间: 2007-9-29 19:44
大致看懂了,要改的是第7行和第9行.
把你改好后的效果也发来看看,否则真不知道你要的是什么效果.
作者: yyf0346     时间: 2007-9-29 19:51
不好意思我没有说清楚,假如我现在使用交互输入
set /P str=123456abcd
我要把myfile.txt文件里的这些 a\c\b\d\e 更改为我输入的字符啊,更改后文件的内容就变成了下边的了:
..........
..........
asdfasdfkasdf = N'sdfsdf'
..........
..........
( NAME = N'HXGL_Data', FILENAME = N'123456abcd\DATA\hxyyt',ff=gg)
lgo  tho
( NAME = N'HXGL_DB', FILENAME = N'123456abcd\DATA\hxtar',uu=yy)
.......
.......
作者: 26933062     时间: 2007-9-29 19:58
有一点要搞清楚,
是替换a\c\b\d\e为123456abcd
还是替换FILENAME = N'和\DATA之间的字符串?
作者: yyf0346     时间: 2007-9-29 20:01
是替换FILENAME = N'和\DATA之间的内容啊
作者: yyf0346     时间: 2007-9-29 20:17
这位大虾不能帮我解决吗?
有个很重要的问题,如果不是myfile.txt文件,而是mafile.sql文件也照样能用bat批处理文件做字符串的更改吗?
作者: 26933062     时间: 2007-9-29 20:35
感觉弯子越绕越大,唉,能达到效果就行.
@echo off&CD.>_a.TXT
set var=1234567
for /f "tokens=1* delims=:" %%a in ('findstr /n .* a.txt') do (
if "%%a"=="7" (call :lis "%%b") else (
if "%%a"=="9" (call :lis "%%b") else echo.%%b>>_a.TXT
))
del/q a.txt
ren _a.txt a.txt
start a.txt
EXIT
:lis
set num=%~1
set num=%num:FILENAME=#%
set num=%num:\DATA=#%
for /f "tokens=1,3 delims=#" %%i in ("%num%") do (
echo %%iFILENAME = N'%var%\DATA%%j>>_a.TXT
)
goto :eof

作者: yyf0346     时间: 2007-9-29 20:41
如果不是.txt文件,而是.sql文件也可以吗?
作者: yyf0346     时间: 2007-9-29 20:53
批处理文件就指定读写txt文件或者是INI文件吗?
.sql脚本文件能读写更改吗?
大虾啊,我用你上边的方法处理.sql文件好象不行啊,中途会打开连接到数据库的对话框,然后要更改的.sql文件内容就被清空了老大,这个是什么原因呢?
作者: yyf0346     时间: 2007-9-29 21:04
没有人能解决了吗?
我是不是有点钻牛角尖了啊?
作者: 26933062     时间: 2007-9-29 21:30
I 服了 you !!!
你把上面的txt都换成sql不就行了吗?
作者: yyf0346     时间: 2007-9-29 21:35
我也这么想,可是我换了以后就是不行呀
没有解决的办法了吗?
作者: 26933062     时间: 2007-9-29 21:38
你试试这个看能不能看到内容
能看到内容就说明可以,
@echo off
echo 看得到吗?>>a.sql
start notepad.exe a.sql

作者: yyf0346     时间: 2007-9-29 21:47
看到这个内容:뒿쎵붵ി뼊떴뗃슽㿰਍뒿쎵붵ി

原因是.sql文件里含有Unicode,而txt文本是ANSI编码的,所以会这样
要怎么解决呢

我也想过把.sql脚本文件里面的内容复制保存到txt文本里,然后修改txt文本文件后,在把后缀修改为.sql,这样失败了。一开始要把.sql脚本文件里面的内容复制保存保存到txt文本里时就出现了上边说的编码问题了
作者: 26933062     时间: 2007-9-29 22:41
这样可以处理Unicode编码的文件了,你试试,不过不能处理空行
@echo off
for /f "delims=" %%a in ('type a.sql') do echo %%a
pause

作者: yyf0346     时间: 2007-9-30 09:14
谢谢你,不过我试了下不行,只取读了一部分信息而已,
这样好吗?:我发个.sql脚本的文件给你,你帮我实现那个字符替换的功能吧,我等你
作者: yyf0346     时间: 2007-9-30 09:14
好象上传不了文件啊
作者: yyf0346     时间: 2007-9-30 11:24
有人能帮我吗?