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

[文本处理] 我想去掉字符串里的"*"

[复制链接]
发表于 2025-12-21 16:25:00 | 显示全部楼层 |阅读模式
  1. C:\Users\X>set a=*a*bcd

  2. C:\Users\X>echo %a%
  3. *a*bcd

  4. C:\Users\X>echo %a:*=%
  5. 此时不应有 =%
复制代码
为什么不行呢?
发表于 2025-12-21 20:07:00 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-12-21 20:35 编辑

回复 1# gbx972

字符 * 和 = 是字符串替换函数的语义字符,不能用于被替换字符,可用以下代码绕行解决...
一。纯批方法

  1. @echo off &setlocal &set "_s=" &set "s=*a*bcd"
  2. :[loop]
  3.         set "c=%s:~,1%"
  4.         if "%c%" neq "*" (set "_s=%_s%%c%")
  5.         set "s=%s:~1%"
  6.         if defined s goto[loop]
  7. echo,%_s%
  8. pause&exit/b
复制代码
二。powershell方法

  1. @echo off &setlocal &set "s=*a*bcd"
  2. for /f "delims=" %%a in ('powershell -c " '%s%'.replace('*','')" ') do set "_s=%%a"
  3. echo,%_s%
  4. pause&exit/b
复制代码
三。用纯批的 for /f 分割器处理,即将 * 字符作为字段分隔符,但须已知被分割的字段个数,故此法有限仅供参考...

  1. @echo off &setlocal &set "s=*a*bcd"
  2. for /f "tokens=1-2 delims=*" %%a in ("%s%") do set "_s=%%a%%b"
  3. echo,%_s%
  4. pause&exit/b
复制代码

评分

参与人数 1技术 +1 收起 理由
zzz19760225 + 1 :[loop] goto[loop]

查看全部评分

 楼主| 发表于 2025-12-21 22:33:36 | 显示全部楼层
回复 2# aloha20200628


    非常感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 07:06 , Processed in 0.023623 second(s), 12 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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