Batch file 使用批处理文件在批处理文件中的特定行后插入新行

Batch file 使用批处理文件在批处理文件中的特定行后插入新行,batch-file,Batch File,我想在批处理文件中的特定行之后插入一行。 输入: 输出: set MTBBankpath=C:\InstallerOutput\QuickBooks-Sync\MTB set IndbBankpath=C:\InstallerOutput\QuickBooks-Sync\indb echo To copy QuickBooks-Sync COM components into resultant folder copy /Y %ConnectorExecutionPath%\%outqbsync

我想在批处理文件中的特定行之后插入一行。
输入:

输出:

set MTBBankpath=C:\InstallerOutput\QuickBooks-Sync\MTB
set IndbBankpath=C:\InstallerOutput\QuickBooks-Sync\indb
echo To copy QuickBooks-Sync COM components into resultant folder
copy /Y %ConnectorExecutionPath%\%outqbsyncpath%
将新行
set IndbBankpath=C:\InstallerOutput\QuickBooks Sync\indb
插入到特定行之后

SETLOCAL ENABLEDELAYEDEXPANSION

set inputFile=%userprofile%\desktop\testSO.bat
set outputFile=%userprofile%\desktop\testSOout.bat
set _strInsert=set IndbBankpath=C:\InstallerOutput\QuickBooks-Sync\indb
set _strFind=set MTBBankpath=C:\InstallerOutput\QuickBooks-Sync\MTB

FOR /F "usebackq delims=" %%A IN ("%inputFile%") DO (
  Echo %%A | Find "%_strFind%" && ECHO %%A>>"%outputFile%" && ECHO %_strInsert%>>"%outputFile%"
  IF [!errorlevel!] == [1] ECHO %%A>>"%outputFile%"
)
基本上,对于文件中的每一行,对有问题的字符串执行
FIND
,如果找到了,将字符串回显到out文件中,然后回显要插入到outfile中的内容。如果在该字符串中找不到您要查找的内容,它只会将该字符串回显到out文件中

编辑:如果文件相当大。。。这可能会快一点

SETLOCAL ENABLEDELAYEDEXPANSION

set inputFile=%userprofile%\desktop\testSO.bat
set outputFile=%userprofile%\desktop\testSOout.bat
set _strInsert=set IndbBankpath=C:\InstallerOutput\QuickBooks-Sync\indb
set _strFind=set MTBBankpath=C:\InstallerOutput\QuickBooks-Sync\MTB
set i=0

FOR /F "usebackq tokens=1 delims=[]" %%A IN (`FIND /N "%_strFind%" "%inputFile%"`) DO (set _strNum=%%A)
FOR /F "usebackq delims=" %%A IN ("%inputFile%") DO (
  set /a i = !i! + 1
  ECHO %%A>>"%outputFile%"
  IF [!i!] == [%_strNum%] (ECHO %_strInsert%>>"%outputFile%")
)
如果要“假装”它正在写入同一个文件,请将其添加到脚本末尾

MOVE/Y“%outputFile%”“%inputFile%”和&DEL/F/Q“%outputFile%”

编辑:我可以和更多的LYNES打交道

SETLOCAL ENABLEDELAYEDEXPANSION

set inputFile=%userprofile%\desktop\testSO.bat
set outputFile=%userprofile%\desktop\testSOout.bat
set _strInsert=set IndbBankpath=C:\InstallerOutput\QuickBooks-Sync\indb
set _strFind=set MTBBankpath=C:\InstallerOutput\QuickBooks-Sync\MTB
set i=0

FOR /F "usebackq tokens=1 delims=[]" %%A IN (`FIND /N "%_strFind%" "%inputFile%"`) DO (set _strNum=%%A)
FOR /F "usebackq delims=" %%A IN ("%inputFile%") DO (
  set /a i = !i! + 1
  ECHO %%A>>"%outputFile%"
  IF [!i!] == [%_strNum%] (
    ECHO %_strInsert%>>"%outputFile%"
    ECHO I WANT TO ADD THIS LINE ALSO>>"%outputFile%"
    ECHO OOOO THIS LiNE TOO>>"%outputFile%"
    ECHO ZOMGBBQSAUCE ADD THIS LINE ALSO>>"%outputFile%"
  )
)

如果我想在某一行后面加上两三行代码,可以这样做。你不需要太多代码,是吗?lol。我将在一分钟内添加一个编辑。这对我不起作用。执行将以“缺少运算符”停止。注意到错误:
ECHO%%a>>%“outputFile%”
应该是
ECHO%%a>%outputFile%”。
我可以插入一行没有任何像mkdir或copy这样的命令的行。如果我尝试插入一行“mkdir%ConnectorExecutionPath%\QuickBooks Sync\obj\x86\Release”,它将失败..因为mkdir不被视为单词,而被视为命令。。希望你能帮我。。。
set inputFile=%userprofile%\desktop\testSO.bat
set outputFile=%userprofile%\desktop\testSOout.bat
set _strInsert=set IndbBankpath=C:\InstallerOutput\QuickBooks-Sync\indb
set _strFind=set MTBBankpath=C:\InstallerOutput\QuickBooks-Sync\MTB
set i=0

FOR /F "usebackq tokens=1 delims=[]" %%A IN (`FIND /N "%_strFind%" "%inputFile%"`) DO (set _strNum=%%A)
FOR /F "usebackq delims=" %%A IN ("%inputFile%") DO (
  set /a i = !i! + 1
  ECHO %%A>>"%outputFile%"
  IF [!i!] == [%_strNum%] (
    ECHO %_strInsert%>>"%outputFile%"
    ECHO I WANT TO ADD THIS LINE ALSO>>"%outputFile%"
    ECHO OOOO THIS LiNE TOO>>"%outputFile%"
    ECHO ZOMGBBQSAUCE ADD THIS LINE ALSO>>"%outputFile%"
  )
)