找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 17988|回复: 6

[文本处理] 【已解决】请教批处理字符串替换时,内有特殊符号|怎么办?

[复制链接]
发表于 2023-5-21 20:24:07 | 显示全部楼层 |阅读模式
本帖最后由 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
  1. for /f "delims=" %%i in (%~dp0skus.txt) do (
  2. set str=%%i
  3. call set str=%%str:!s!=!f!%%
  4. echo !str!>>n-skus.txt
  5. )
  6. pause
复制代码
请教:文本的格式固定,所以!s!和!f!必有|,这种情况下该如何解决?
发表于 2023-5-21 21:15:57 | 显示全部楼层
我感觉有难度,建议在前期处理中把|替换为其他无影响的字符,比如#@,这样处理难度小一些。
发表于 2023-5-21 21:46:35 | 显示全部楼层
加双引号
  1. set "str=%%i"
  2. call set "str=%%str:!s!=!f!%%"
复制代码
发表于 2023-5-21 22:02:54 | 显示全部楼层
除了call 变量s和f是FOR外面的话这样也行
  1.      set "str=%%i"
  2.      set "str=!str:%s%=%f%!"
复制代码
 楼主| 发表于 2023-5-22 11:22:04 | 显示全部楼层
回复 3# buyiyang

多谢大佬,完美解决。
 楼主| 发表于 2023-5-22 11:22:18 | 显示全部楼层
回复 4# terse


    学到了,谢谢大佬
 楼主| 发表于 2023-5-22 11:24:12 | 显示全部楼层
回复 2# hlzj88


    没办法,文档原本格式就是这样,所以新内容替换也要按照这个格式走,否则会有连锁反应导致一连串其它引用这个文档的功能都出问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 21:12 , Processed in 0.018152 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表