我想用批处理脚本编辑一个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所以基本上在“子格模态屈曲本征值”前加两行"R E A L E I G E N V A L U E 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) 如果有人来纠正我的脚本,它将非常感谢。问候Iain
发布于 2013-05-15 08:26:56
@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-15 02:47:36
如果您想在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-15 02:48:04
如果我误解了你的问题,很抱歉,但是:
@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这就是你的意思吗?
https://stackoverflow.com/questions/16550347
复制相似问题