首页 > 解决方案 > 文件中的批量搜索和替换删除字符“!”

问题描述

目前我正在尝试创建一个批处理脚本,该脚本假设自动为 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)

所以字符“!” 在添加服务期间被删除。

标签: batch-file

解决方案


推荐阅读