当前位置: 首页 > 编程笔记 >

DOS(bat)字符串替换原理

单于旭东
2023-03-14
本文向大家介绍DOS(bat)字符串替换原理,包括了DOS(bat)字符串替换原理的使用技巧和注意事项,需要的朋友参考一下

把字符串 “c:/test/1”  中的  “/” 全部替换成 “//”  的原理:

(假设 "C:/TEST/1” 字符串已存在 VAR 变量中:)

C:/WINDOWS>set "var=C:/TEST/1"

(将 var 变量中的字符串里 "/" 字符全部替换成 "//")

C:/WINDOWS>set "var=%var:/=//%"

(显示 var 变量中的内容)

C:/WINDOWS>echo %var%
C://TEST//1

结果为:C://TEST//1 ,已全部替换完成。

下面给几个其他网友给的例子

文件字符串替换

@echo off

echo ***** Replace "abcd" as "ABCD" *****
set strFilePath=C:\Users\Leez\Desktop\TestBat\TestSource.txt
set strOld=abcd
set strNew=ABCD

setlocal enabledelayedexpansion
for /f "tokens=*" %%i in (%strFilePath%) do (
  set "var=%%i"
  if not !var!.==. (
    set "var=!var:%strOld%=%strNew%!"
    echo !var!!>>%strFilePath%.bk
  )
)

move /y %strFilePath%.bk %strFilePath%

pause

例子二:

@echo off 
setlocal enabledelayedexpansion 
set file= 
set /p file= 请输入要操作的文件名称(包括扩展名): 
set "file=%file:"=%" 
for %%i in ("%file%") do set file=%%~fi 
echo. 
set replaced= 
set /p replaced= 请输入即将被替换的内容: 
echo. 
set all= 
set /p all= 请输入替换字符串: 
for /f "delims=" %%i in ('type "%file%"') do ( 
set str=%%i 
set "str=!str:%replaced%=%all%!" 
echo !str!>>"%file%"_tmp.txt 
) 
copy "%file%" "%file%"_bak.txt >nul 2>nul 
move "%file%"_tmp.txt "%file%" 
start "" "%file%"

笔者将它更改一下
把16改为17

@echo off 
setlocal enabledelayedexpansion 
set file=c:\Program Files\hndsclient\ds\GetFile.ini
set "file=%file:"=%" 
for %%i in ("%file%") do set file=%%~fi 
echo. 
set replaced=16 
echo. 
set all=17
for /f "delims=" %%i in ('type "%file%"') do ( 
  set str=%%i 
  set "str=!str:%replaced%=%all%!" 
  echo !str!>>"%file%"_tmp.txt 
) 
copy "%file%" "%file%"_bak.txt >nul 2>nul 
move "%file%"_tmp.txt "%file%" 
start "" "%file%"
 类似资料:
  • 本文向大家介绍写了个批量替换字符串的bat批处理(replaceChar.bat),包括了写了个批量替换字符串的bat批处理(replaceChar.bat)的使用技巧和注意事项,需要的朋友参考一下 在windows上跑case时,我用它来替换xml文档中的名称和值什么的,还可以。但如果遇到bat中有特殊意义的字符比如<,>,%等就不行了,而且替换过程会消除每行的空格。鉴于dos知识有限,还没找到

  • 问题内容: 我有一个以字符串形式传递的句子,我正在对单词“ and”进行替换,我想用“”替换它。而且它不是用空格替换“和”一词。以下是我的逻辑示例。而当我调试此逻辑时,逻辑确实落入了句子。 这里有我想念的东西吗? 问题答案: 而当我调试此逻辑时,逻辑确实落入了句子。 是的,然后你放弃返回值。 Java中的字符串是不可变的-当你调用时,它不会更改现有字符串的内容-它会返回经过修改的新字符串。所以你要

  • 我有一个作为字符串传入的句子,我正在对单词“and”进行替换,我想用“”替换它。它并没有用空白代替“和”。下面是我的逻辑示例。当我调试这个的时候,逻辑就落在句子里了。代替 这里有我遗漏的东西吗。

  • 问题内容: 我有一列包含网址(ID,网址)的列: 我想将“更新”一词更改为“新闻”。是否可以使用脚本执行此操作? 问题答案: 现在的行就像 将会 http://www.electrictoolbox.com/mysql-find-replace- text/

  • 问题 你需要用另一个值替换字符串的一部分。 解决方案 使用 JavaScript 的 replace 方法。它与给定字符串匹配,并返回已编辑的字符串。 第一个版本需要 2 个参数:模式和字符串替换 "JavaScript is my favorite!".replace /Java/, "Coffee" # => 'CoffeeScript is my favorite!' "foo bar b

  • 我正在建立一个maven原型。文件名替换也正常工作。例如,我有一个名为artifactd-log4j.xml的文件,当生成该文件时,将被替换。但是,其中一个xml文件(引用它的spring上下文文件)没有被替换: 由于某种原因,xml文件中的标记${artifactId}从未被替换。我的原型-metadata.xml spring-file在src/main/resources下,既然fileSe