2013-05-14 48 views
0

我想用批處理腳本編輯txt文件。 我在網上查找並嘗試調整一些示例以適合我的需要。 但是我沒有編程技巧,也沒有能夠讓我的程序工作。使用批處理程序查找和編輯txt文件

這是我的問題。 我有一個包含這在文件中的某些點的TXT文件:

Subcase Mode Buckling Eigenvalue 
43  1  2.124238E+00 
43  2  2.169874E+00 
43  3  2.628187E+00 
43  4  2.832127E+00 
43  5  2.968359E+00 
43  6  3.131774E+00 

我想改變它看起來像這樣:

R E A L E I G E N V A L U E S 

Subcase Mode Buckling Eigenvalue 
43  1  2.630623E-01 
43  2  2.676471E-01 
43  3  2.982211E-01 

所以基本上前兩行添加「REALEIGENVALUES」「子模式屈曲特徵值「,但不刪除之前的行中的內容。即在添加兩個新線。

我曾嘗試以下,但只打印出第8行到新的文本文件

@echo off 

for /f "tokens=* delims=" %%a in (le_panel_7_cut down_i.out) do call :Change "%%a" 
exit /b 

:Change 
set Text=%~1 
if "%Text%"=="Subcase Mode Buckling Eigenvalue" (
(echo R E A L E I G E N V A L U E S &echo[ &echo[ &echo[Subcase Mode Buckling Eigenvalue)>> D:\FEA\newfile.txt 
) else (
(echo %Text%)>> D:\FEA\newfile.out 
) 
exit /b 

我也嘗試另一個腳本,這個樣子,但是這也沒有工作。

@echo on 
     SETLOCAL=ENABLEDELAYEDEXPANSION 

      for /f "delims=" %%a in (le_panel_7_cut_down_i.out) do (
      set foo=%%a 
      if !foo!=="Subcase Mode Buckling Eigenvalue" set foo=(
echo R E A L E I G E N V A L U E S &echo[ &echo[ &echo[Subcase Mode Buckling Eigenvalue) 
    echo !foo! >> file3.txt) 

如果有人糾正我的腳本,將不勝感激。 問候 伊恩,如果你想在yourfile.txt的開頭添加兩行

回答

1
@ECHO OFF 
SETLOCAL ENABLEDELAYEDEXPANSION 
(
FOR /f "delims=" %%z IN (' type eigenfile.txt^|findstr /n /r "$" ') DO (
    SET "line=%%z" 
    SET "line=!line:*:=!" 
    IF "!line!"=="Subcase Mode Buckling Eigenvalue" (
    ECHO(R E A L E I G E N V A L U E S 
    ECHO(
) 
    ECHO(!line! 
) 
)>outfile.txt 

FC eigenfile.txt outfile.txt 

GOTO :eof 

這應該執行您的修訂規範。

本質上,它只是複製每一行,包括空行(FINDSTR /n的原因以及後面的SET ...!..:*:=!"刪除由findstr前綴的行號)。當它找到目標行時,它首先添加指定的額外兩行。

請注意,echo(已被證明是各種ECHO變體的最佳選擇,以允許例如空變量被正確地再現。

我很明顯地假設你的數據在eigenfile.txt。此批生產outfile.txt - 您可以選擇重命名它 - 而FC只是簡單地顯示所做的更改。

+0

完美,謝謝 – iain

0

,試試這個:如果

echo R E A L E I G E N V A L U E S >newfile.txt 
echo. >>newfile.txt 
type yourfile.txt >>newfile.txt 

delete yourfile.txt 
rename newfile.txt yourfile.txt 
+0

對不起,我不是很清楚 我不想任何東西到文件的開頭。 我需要程序搜索文件中的「Subcase Mode Buckling Eigenvalue」所在的位置,然後在上面兩行添加「R E A L L E I G E N V A L U E S」。文本「Subcase Mode Buckling Eigenvalue」將成爲文件中的數百行。 – iain

0

道歉,我誤解你的問題,而是:

@echo off 
echo R E A L E I G E N V A L U E S > out.tmp 
echo. >> out.tmp 
type yourtxtfile.txt >> out.tmp 
move out.tmp yourtxtfile.txt 

是這是你的意思?