批量搜索并替换为文件会删除字符“!”

时间:2019-08-21 12:01:15

标签: 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)

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

0 个答案:

没有答案
相关问题