标题: [文本处理] 【已解决】请教批处理字符串替换时,内有特殊符号|怎么办? [打印本页]
作者: 52hz 时间: 2023-5-21 20:24 标题: 【已解决】请教批处理字符串替换时,内有特殊符号|怎么办?
本帖最后由 52hz 于 2023-5-24 09:24 编辑
需求:在文本中查找部分字符串,找到后把整行内容赋值给变量!s!,然后用另一个变量!f!将文本中的整行!s!替换掉。
代码的替换功能可以用,但实际执行一直不成功,测试很多次之后发现好像是因为字符串中有|这个特殊符号导致的,把变量中的|删掉后可以正常替换,加上就失效,我不知道我的推论是不是正确的,如果确实是因为这个特殊符号,请教该怎么办?
代码如下:
其中!s!和!f!变量为前段代码运行出来的结果,两个变量中都有特殊符号|
!s!的值举例:
5|A|AAA11111,BBB22222,CCC33333,DDD44444
!f!的值举例:
8|A|AAA55555,BBB666,CCC777777,DDD44444- for /f "delims=" %%i in (%~dp0skus.txt) do (
- set str=%%i
- call set str=%%str:!s!=!f!%%
- echo !str!>>n-skus.txt
- )
- pause
复制代码
请教:文本的格式固定,所以!s!和!f!必有|,这种情况下该如何解决?
作者: hlzj88 时间: 2023-5-21 21:15
我感觉有难度,建议在前期处理中把|替换为其他无影响的字符,比如#@,这样处理难度小一些。
作者: buyiyang 时间: 2023-5-21 21:46
加双引号- set "str=%%i"
- call set "str=%%str:!s!=!f!%%"
复制代码
作者: terse 时间: 2023-5-21 22:02
除了call 变量s和f是FOR外面的话这样也行- set "str=%%i"
- set "str=!str:%s%=%f%!"
复制代码
作者: 52hz 时间: 2023-5-22 11:22
回复 3# buyiyang
多谢大佬,完美解决。
作者: 52hz 时间: 2023-5-22 11:22
回复 4# terse
学到了,谢谢大佬
作者: 52hz 时间: 2023-5-22 11:24
回复 2# hlzj88
没办法,文档原本格式就是这样,所以新内容替换也要按照这个格式走,否则会有连锁反应导致一连串其它引用这个文档的功能都出问题。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |