下面这段批处理的功能是把A.txt文件中的字符3a替换成a3(假如文件的内容是123abc)。
功能是可以实现,但我发现有个小毛病,就是被替换的字符val1中不能有等号(就是=)。
我想问下如果确实有这样的需求,就是被替换字符有等号,该怎么改呢?比如假如文件的内容是123=abc,想把3=改为3+,该怎样写呢?求大神指教,多谢
@echo off
setlocal enabledelayedexpansion
set file=A.txt
set val1=3a
set val2=a3
for %%i in ("%file%") do set file=%%~fi
for /f "delims=" %%i in (*type "%file%"*) do (
set str=%%i
set "str=!str:%val1%=%val2%!"
del A.txt
echo !str!>>%file%
)
另外还有个问题,假如A.txt原文件中某一行有tab缩进,tab缩进本身是不等于我要替换的3a的,我只希望保持原样即可,但是脚本执行完tab缩进所在行被替换成“ECHO 处于关闭状态。”,这个问题该如何解决呢?
功能是可以实现,但我发现有个小毛病,就是被替换的字符val1中不能有等号(就是=)。
我想问下如果确实有这样的需求,就是被替换字符有等号,该怎么改呢?比如假如文件的内容是123=abc,想把3=改为3+,该怎样写呢?求大神指教,多谢
@echo off
setlocal enabledelayedexpansion
set file=A.txt
set val1=3a
set val2=a3
for %%i in ("%file%") do set file=%%~fi
for /f "delims=" %%i in (*type "%file%"*) do (
set str=%%i
set "str=!str:%val1%=%val2%!"
del A.txt
echo !str!>>%file%
)
另外还有个问题,假如A.txt原文件中某一行有tab缩进,tab缩进本身是不等于我要替换的3a的,我只希望保持原样即可,但是脚本执行完tab缩进所在行被替换成“ECHO 处于关闭状态。”,这个问题该如何解决呢?