batch-file - 文件中的批量搜索和替换删除字符“!”
问题描述
目前我正在尝试创建一个批处理脚本,该脚本假设自动为 C# 中的后端创建文件。批处理脚本将输入作为变量,并从以前编写的模板创建各种文件并修改现有文件。
但是“Startup.cs”文件包含一个“!” 修改时消失的字符。
在这一步中,我将修改“Startup.cs”文件以将单例添加到服务中。
我已经在其他计算机上尝试过批处理脚本,也尝试过使用除“!”之外的其他特殊字符的文件,这似乎有效。
:addService
SETLOCAL enabledelayedexpansion
FOR /f "delims=:" %%a in ('findstr /in "services.AddSingleton" .\PATH_TO_STARTUP.CS_FILE\Startup.cs') do SET /a found=%%a
SET /a line=found+1
SET "file=.\PATH_TO_STARTUP.CS_FILE\Startup.cs"
SET "newFile=Startup.cs"
(
For /f "Tokens=1*Delims=:" %%A in (
'Findstr /N ".*" "%file%"'
) Do IF %%A Equ %line% (
ECHO services.AddSingleton^<I%serviceName%Service, %serviceName%Service^>^(^);
ECHO }
) ELSE (
ECHO:%%B
)
) >"%newFile%"
XCOPY /y Startup.cs .\PATH_TO_STARTUP.CS_FILE\ >NUL
DEL Startup.cs >NUL
ENDLOCAL
FOR %%A IN (.\PATH_TO_STARTUP.CS_FILE\Startup.cs) DO SET "size=%%~zA"
ECHO [34mUPDATE[0m .\PATH_TO_STARTUP.CS_FILE\Startup.cs ^(%size% bytes^)
GOTO:EOF
我希望文件是先前“Startup.cs”文件的精确副本,但创建的服务作为文件中其他服务下方的一行。这目前正在工作,但是“Startup.cs”文件有以下行:
if (cs != null)
正在修改为此:
if (cs = null)
所以字符“!” 在添加服务期间被删除。
解决方案
推荐阅读
- javascript - 为什么我的应用脚本代码将电子表格复制到谷歌驱动器的根目录以及特定目录?
- docker - Dockerfile:来自守护进程的错误响应:OCI 运行时创建失败:container_linux.go:349
- java - 在方法重载中,方法解析发生在编译时还是运行时?
- python - 在 Ubuntu 20.04 上安装 Python 3.9 时出错 > 已解决
- vue.js - 如何在 node_modules 中更改 Vue 的 src 代码进行测试
- forms - 提交列表表格并重定向到 PayPal
- java - 如何以“;”分隔的各种号码发送消息?
- makefile - Makefile:从版本字符串中获取短版本字符串
- python - Matlab代码的Python实现——有限差分法
- c# - 是否可以将基类限制为特定的子类?