Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在某些情况下,在文件中替换字符串

在某些情况下,在文件中替换字符串
EN

Stack Overflow用户
提问于 2022-09-21 12:38:13
回答 1查看 37关注 0票数 -2

我有这样格式的文件:

代码语言:javascript
运行
AI代码解释
复制
tcpport 1500
webports 1500,1500
tcpclientport 1500

只有当我找到字符串1500时,我才想用1510替换webports

我在搜索和替换字符串时发现了许多脚本,但它们用另一个字符串替换了所有出现的字符串。这不是我想要的。

如何在Windows批处理文件中做到这一点?

EN

回答 1

Stack Overflow用户

发布于 2022-09-22 12:25:56

代码语言:javascript
运行
AI代码解释
复制
Here is an answer

================================
@::-----------------------------------------------------------------------------------
@:: --- Fonction substitute_str
@::-----------------------------------------------------------------------------------
:substitute_str

@echo off
setlocal enableextensions disabledelayedexpansion

set "oldstring=%1"   rem string to replace
set "newstring=%2"   rem replacing string
set "textFile=%3"    rem file where replacement will take place
set "texttosearch=%4" rem string to be present in the line so that replacement could take place.

set "FICWORK=C:\temp\EvoSvgWin.wrk"
set "FICTEMP=C:\temp\EvoSvgWin.out"

for /f "delims=" %%i in ('type %textFile% ^& break ^> %textFile% ') do (

    set "line=%%i"
    type NUL > %FICTEMP%
    echo(!line! > %FICWORK%
    
    type "%FICWORK%" | findstr /I "%texttosearch%"  > %FICTEMP%
    for %%S in ("%FICTEMP%") do ( @set "size=%%~zS" )
    if NOT !size! EQU 0 (       
            echo(!line:%oldstring%=%newstring%! >> %textFile% 
    ) else (
            echo(!line! >> %textFile%
    )
        
    endlocal

)
del %FICTEMP% %FICWORK%

EXIT /B 0
==========================================================================
NB : >> %textFile%  is necessary because the function can be called many times with the same file so that all replacements could take place in the same.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73806698

复制
相关文章
在vim和vi中查找和替换字符串
Vim是最受欢迎的命令行文本编辑器。它预装在macOS和大多数Linux发行版上。在Vim中查找和替换文本非常容易。 基本查找和替换 在Vim中,可以使用:substitute(:s)命令来查找和替换文本。 要在Vim中运行命令,必须处于normal模式,这是启动编辑器时的默认模式。要从其他任何模式返回normal模式,只需按 Esc键。 替换命令的一般形式如下: :[range]s/{pattern}/{string}/[flags] [count] 该命令在[range]中的每一行中搜索{patter
入门笔记
2022/06/02
17.5K0
在文件中输入字符串HelloWord
Our life today is three years ago, our life three years later is today's choice.
小Bob来啦
2020/12/15
2.7K0
在文件中输入字符串HelloWord
在 Python 中的常见的几种字符串替换操作
比如,输入的字符串为’one two one two one’,第一个参数为替换前的参数,第二个为替换后的参数。默认会替换字符串中的所有符合条件的字符串。
全栈程序员站长
2022/09/07
6.4K0
关于在vim中的查找和替换
在normal模式下按下/即可进入查找模式,输入要查找的字符串并按下回车。 Vim会跳转到第一个匹配。按下n查找下一个,按下N查找上一个。
休辞醉倒
2019/07/25
26.6K0
在XCODE中替换__MyCompanyName__的名字
在使用XCODE的时候,在注释中有一段公司版权的信息,但是始终是__MyCompanyName__,而且也没找到相应的界面去更改。后来发现,可以通过在命令行使用如下命令,进行更改:
EltonZheng
2021/01/26
1.3K0
正则表达式 不以某些字符开头的字符串 利用notepad++替换空行 在每行前面加字符串
工作中用到的几个很有用的正则表达式: 换行符均为\r\n 根据操作系统换行符也不同 如果换行符是\n 就把\r\n换成\n ---- 1 匹配不以ssr:// vemss:// http://开头的
heasy3
2020/08/01
2.8K0
巧用js替换某些不能替换的文字
在运行某些程序时,作者为了保护版权,将版权文字进行了特殊处理,使得我们无法进行修改。
繁花云
2018/07/31
15.2K0
【DB笔试面试803】在Oracle中,控制文件在缺失归档日志的情况下的恢复步骤有哪些?
在恢复控制文件时“recover database”命令可能需要使用归档日志。所谓缺失归档日志,是指控制文件从备份还原之后,在执行“recover database”命令恢复时报告找不到相应的日志导致恢复终止的情况。
AiDBA宝典
2020/05/25
6620
linux命令行中替换多个文件中的字符串
将当前目录下所有文件中的tmp替换成rumenz sed > sed -i 's/tmp/rumenz/g' * 替换前备份 > sed -i '.bak' 's/tmp/rumenz/g' * find > find ./ -type f -exec sed -i 's/tmp/rumenz/g' {} \; 不区分大小写 > find ./ -type f -exec sed -i 's/tmp/rumenz/gI' {} \; grep sed > grep -rl tmp ./ | xarg
入门笔记
2022/06/02
4.5K0
如何使用 sed 替换文件中的字符串?
在 Linux 系统中,sed 是一个非常有用的文本处理工具,它可以用于在文件中进行字符串替换操作。sed 是流编辑器(stream editor)的缩写,它可以对文本进行逐行处理,包括查找和替换特定的字符串。本文将详细介绍如何使用 sed 命令在文件中进行字符串替换操作。
网络技术联盟站
2023/06/09
5.9K0
如何使用 sed 替换文件中的字符串?
Adobe认证指南|在 Adobe Photoshop 中替换产品背景
要使用从孟菲斯设计结构中创建的路径,请点击我们“选项卡”面板中的“路径”(“窗口”>“路径”)。
IT胶囊
2022/02/11
9660
Adobe认证指南|在 Adobe Photoshop 中替换产品背景
一日一技:在字符串中批量替换单个字符
不过当需要替换的字符串比较少时, translate的效率比 replace低。并且 translate只能实现多个单字符的替换,不能替换多字符的字符串,例如:
青南
2019/05/23
1.1K0
在 JavaScript 中替换所有指定字符 3 种方法
在 JS 没有提供一种简便的方法来替换所有指定字符。 在 Java 中有一个 replaceAll() ,replaceAll(String regex, String replacement))方法使用给定的参数 replacement 替换字符串所有匹配给定的正则表达式的子字符串。
前端小智@大迁世界
2020/06/28
31.4K0
在 Docker 容器中编辑文件
我希望每次在docker容器中安装vi的时候谁会给我1美元...我想要一个在运行的docker容器编辑文件的更简单的方式。首先,尝试避免编辑文件,这违背了容器的哲学理念(见最后一段)。
星哥玩云
2022/07/03
5.7K0
在 Docker 容器中编辑文件
Sumly法直接替换文件中的字符串_
perl -p -i -e "s/China/Sumly/g" /www/*.htm /www/*.txt
Dlimeng
2023/06/29
1950
在C#中ref和out具体怎么使用?在什么情况下使用?
ref是传递参数的地址,out是返回值,两者有一定的相同之处,不过也有不同点。   使用ref前必须对变量赋值,out不用。   out的函数会清空变量,即使变量已经赋值也不行,退出函数时所有out引用的变量都要赋值,ref引用的可以修改,也可以不修改。   区别可以参看下面的代码应该就明白了:
zls365
2020/08/19
3K0
js替换html中的字符串,js怎么替换字符串?
在js中,可以使用str.replace()方法来替换字符串。replace()方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串;然后返回一个新的字符串。
全栈程序员站长
2022/08/30
24.3K0
js替换html中的字符串,js怎么替换字符串?
Makefile中的字符串替换
Makefile Tutotial最后给出了一段makefile,里面OBJS有字符串通配、替换的过程:
mingjie
2023/10/13
8360
在Excel中通过VBA对Word文档进行查找替换
哆哆Excel
2023/09/09
9850
在Excel中通过VBA对Word文档进行查找替换
在Ubuntu中安装Samba文件服务
在Ubuntu中安装Samba文件服务安装 samba 服务root@v:~# apt install samba samba-commonroot@v:~# 创建共享目录root@v:~# mkdir /cby/smb/ -pvroot@v:~# chmod 777 -R /cby/smb/root@v:~# 修改配置文件# 编写配置文件 实现匿名访问[share]path = /cby/smbpublic = yesread only = noguest ok = Yescreate mask = 06
小陈运维
2022/11/09
1.8K0

相似问题

在某些情况下,替换字符串失败

113

在页面加载中如何在某些情况下替换javascript文件

10

Regex在某些情况下替换零

22

在XML文件的某些部分中替换?

12

在某些情况下,替换不起作用

25
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档