0

我想用批处理脚本编辑一个 txt 文件。我在网上查看并尝试调整一些示例以满足我的需要。但是我没有编程技能,也无法让我的程序正常工作。

这是我的问题。我有一个 txt 文件,其中包含文件中的某个位置:

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

我想把它改成这样:

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

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

所以基本上在“Subcase Mode Buckling Eigenvalue”之前添加“REALEIGENVALUE S”两行,但不删除之前行中的内容。即添加两个新行。

我尝试了以下方法,但它只将前 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) 

如果有人纠正我的脚本,将不胜感激。问候伊恩

4

3 回答 3

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 只是显示所做的更改。

于 2013-05-15T00:26:56.097 回答
0

如果你想在 yourfile.txt 的开头添加两行,试试这个:

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
于 2013-05-14T18:47:36.320 回答
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

你是这个意思吗?

于 2013-05-14T18:48:03.670 回答