2012-02-15 11 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。その文字列で探しているものが見つからない場合は、文字列を出力ファイルにエコーします。

EDIT:ファイルがかなり大きい場合は、それが同じファイルへの書き込みの「ふり」の最後にこれを追加したい場合は...これはおそらく

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%"

編集:私はMORE LYNESをHAZ CAN!

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

+0

あなたはあまりコードしていませんか?笑。 1分で編集を追加します。 – Mechaflash

+0

これは私のためには機能しません。実行が「Missing operator」で停止します。 – Ramya