当前,我正在尝试创建一个批处理脚本,该脚本应该自动为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)
所以字符“!”在添加服务期间将其删除。