2012-02-15 260 views
1

我想在特定行之後的批處理文件中插入一行。
輸入:使用批處理文件在批處理文件中的特定行之後插入新行

set MTBBankpath=C:\InstallerOutput\QuickBooks-Sync\MTB 
echo To copy QuickBooks-Sync COM components into resultant folder 
copy /Y %ConnectorExecutionPath%\%outqbsyncpath% 

輸出:

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得到插入一個特定的行之後。

回答

3
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有問題的字符串,如果它發現它,呼應串入了文件,然後回聲要插入到什麼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%"

編輯:我HAZ更多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%" 
) 
) 
+0

如果我想要一個特定的行後添加雙線或三線,掃管笏可以做到的。 – Ramya 2012-02-17 11:30:52

+0

你沒有太多的代碼嗎?大聲笑。我會在一分鐘內添加一個編輯。 – Mechaflash 2012-02-17 14:56:24

+0

這對我來說不起作用。執行因「缺少操作員」而停止。 – Ramya 2012-02-20 05:35:24