2015-12-11 69 views
1

我是批處理文件的新手,無法將此處的最後一個步驟拼合在一起。我的目標純粹是在兩行文本之間插入'Test4'。文本永遠不會改變,始終是第1行和第3行(第2行在文本文件中爲空白)。該代碼刪除第2行(空白),但不插入文本。使用批處理文件添加文本行

當前txt文件:

<?xml version="1.0" encoding="UTF-8" ?> 

<!DOCTYPE ProductDataeXchangePackage [ 
1 
2 
3 

當前批處理腳本:你能做到這一點

rem Saved in D:\Temp\WriteText.bat 
echo off 
setlocal enabledelayedexpansion 
ren test.txt in.tmp 
set p= 
for /f "delims=" %%a in (in.tmp) do (
    if "%%a"=="<!DOCTYPE_ProductDataeXchangePackage+[" if "!p!"=="<?xml version="1.0" encoding="UTF-8" ?>" Echo Test4 >> test.txt 
    Echo %%a >>test.txt 
    set p=%%a 
) 
del in.tmp 

回答

0

的一種方式。

rem Saved in D:\Temp\WriteText.bat 
@echo off 
setlocal enabledelayedexpansion 
ren test.txt in.tmp 
set /p line1=<in.tmp 
>test.txt echo %line1% 
>>test.txt Echo Test4 
for /f "skip=1 delims=" %%a in (in.tmp) do >>test.txt Echo %%a 
del in.tmp 
+0

它刪除我原來的text.txt文件。不知道刪除前是否有效。 – user3158712

+0

@ user3158712,您的代碼中沒有名爲text.txt的文件,也沒有在我的代碼中。但是,如果你指的是test.txt,那麼當然。您正在將test.txt重命名爲in.tmp。 – Squashman

+0

對不起,我感到困惑。我的意思是test.txt;但是,我不想將test.txt重命名爲in.tmp,相反,只需在第1行(<?xml version =「1.0」encoding =「)之間插入'test4' UTF-8「?>)和第3行(<!DOCTYPE ProductDataeXchangePackage [))。老實說,我不知道我是將test.txt重命名爲in.tmp – user3158712

2
@echo off 
setlocal EnableDelayedExpansion 

ren test.txt in.tmp 
< in.tmp (

    set /P "line1=" 
    echo !line1! 

    set /P "line2=" 
    echo Test4 

    rem Copy the rest of lines 
    findstr "^" 

) > test.txt 
REM del in.tmp 

編輯輸出例如添加

C:\> type test.txt 
<?xml version="1.0" encoding="UTF-8" ?> 

<!DOCTYPE ProductDataeXchangePackage [ 
1 
2 
3 

C:\> test.bat 

C:\> type test.txt 
<?xml version="1.0" encoding="UTF-8" ?> 
Test4 
<!DOCTYPE ProductDataeXchangePackage [ 
1 
2 
3 
+0

這很酷。不知道你能做到這一點! – Squashman

+0

它添加了新行,但沒有複製其餘行。 – user3158712

+0

@Squashman:請參閱[本文](http://stackoverflow.com/questions/8844868/what-are-the-undocumented-features-and-limitations-of-the-windows-findstr-comman/28278628#28278628) – Aacini