bat脚本修改文件内容

创建bat脚本

新建一个脚本文件 updateFileContent.bat

%关闭回显,设置延迟环境变量扩展%
@echo off&setlocal enabledelayedexpansion

rem 计算调用的参数个数
for %%a in (%*) do set /a num+=1
if defined num (echo 调用了 %num% 个参数) else echo 没有调用任何参数

set fileName=%1
set oldText=%2
set newText=%3

rem 参数个数小于3个提示用户
if num lss 3 (
	goto :errArgsTip
) 

rem 参数个数大于等于4个设置featureText变量
if num geq 4 (
	set featureText=%4
)

echo fileName=%fileName% oldText=%oldText% newText=%newText% 

if defined featureText (echo featureText=%featureText%)

for /f "delims=" %%a in ('findstr /n .* %fileName%') do (
	set "str=%%a"
	rem 替换内容
	if defined featureText (
		rem 查找每行字符串是否包含指定的特征字符,只对包含特征字符的行替换文本
		echo !str!| findstr %featureText% >nul && (
			set "str=!str:%oldText%=%newText%!"
		)
	) else (
		set "str=!str:%oldText%=%newText%!"
	)
	rem 将添加了行号的文本写入临时文件
	echo !str! >>tmp.txt
)
for /f "tokens=1* delims=:" %%i in ('type tmp.txt') do (
	rem 按 : 分割每行字符串
	set "str=%%j"
	if "!str!"==" " (
		rem 写入源文件里的空行
		call echo.>>new_A.txt
	) else (
		rem 将字符串写入文本,每行会多一个空格,使用字符串的截取功能去掉末尾的一个空格
		echo !str:~0,-1!>>new_A.txt
	)
)

rem 删除临时文件并将修改后的文件修改为源文件
del tmp.txt&move new_A.txt %fileName%

goto :end

:errArgsTip
	echo --------------------------------------------------------------------------------
	echo -- 请输入正确的参数:fileName oldText newText [featureText]
	echo -- fileName:待修改文件的文件名
	echo -- oldText:待修改的文本
	echo -- newText:替换后的文本
	echo -- featureText:待修改文本所在行的特性字符,用于定位修改文本所在的行,可选参数
	echo --------------------------------------------------------------------------------
	
:end
	rem 执行完脚本要将num变量取消,以免影响下次执行
	set num=

测试

准备测试文件 test.txt

你好: china

test=hello

year=hello

测试用例一

执行指令:

D:\bat>updateFileContent.bat test.txt hello word
调用了 3 个参数
fileName=test.txt oldText=hello newText=word
移动了         1 个文件。
D:\bat>

执行结果:

你好: china

test=word

year=word

测试用例二

执行指令:

D:\bat>updateFileContent.bat test.txt hello word year
调用了 4 个参数
fileName=test.txt oldText=hello newText=word
featureText=year
移动了         1 个文件。
D:\bat>

执行结果:

你好: china

test=hello

year=word

参考文献:

批处理(bat)脚本语言—SET命令和变量使用
bat文件修改或替换文件内容

  • 4
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值