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

[文本处理] [已解决]批处理替换文本中指定位置的字符串

[复制链接]
发表于 2022-3-28 16:36:07 | 显示全部楼层 |阅读模式
求助坛友:批处理替换文本中指定位置的字符串?指定位置不固定,替换的字符串不固定。谢谢
文本文件:
123(456)7890s(dfgh)jkklzxcc(bm)
dllkkj(qw)erty(uii)o2345(6)
er(twq)irt(r23)568(587)dfdjf(ghk)gg
(5678)hgkfhhlkhuy57898(wecfdh)


处理后:
123(456)7890s(dfgh)jkklzxcc——bm——
dllkkj(qw)erty(uii)o2345——6——
er(twq)irt(r23)568(587)dfdjf——ghk——gg
(5678)hgkfhhlkhuy57898——wecfdh——
发表于 2022-3-28 18:34:00 | 显示全部楼层
回复 1# 881966


    只替换最后一对圆括号对吗?
 楼主| 发表于 2022-3-28 18:37:48 | 显示全部楼层
可以,试试看,谢谢管理员
发表于 2022-3-28 22:12:15 | 显示全部楼层
输入123.txt输出456.txt
  1. powershell "Get-Content '123.txt' | foreach { $_ -replace '\(([^\(\)]*?)\)(?=[^\(\)]*$)','--$1--' }">"456.txt"
复制代码

评分

参与人数 1技术 +1 收起 理由
881966 + 1 谢谢

查看全部评分

 楼主| 发表于 2022-3-29 08:11:27 | 显示全部楼层
回复 4# went


    提示:powershell不是内部或外部命令,也不是可运行的命令
发表于 2022-3-29 13:19:43 | 显示全部楼层
干嘛要杜撰而不引用实际文件内容呢?
就是一个变量替换问题:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in (a.txt) do (
  4.     set "str=%%i"
  5.     set "str=!str:(=.(!"
  6.     if "!str!"=="%%i" (
  7.         echo,%%i
  8.     ) else (
  9.         for %%j in ("!str!") do (
  10.             set "str1=%%~nj"
  11.             set "str1=!str1:.(=(!"
  12.             set "str2=%%~xj"
  13.             set "str2=!str2:.(=——!"
  14.             set "str2=!str2:)=——!"
  15.             echo,!str1!!str2!
  16.         )
  17.     )
  18. )
  19. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
881966 + 1 谢谢

查看全部评分

发表于 2022-3-29 13:22:42 | 显示全部楼层
上面代码保存为ANSI编码运行。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 04:29 , Processed in 0.019884 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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