2013-05-14 4 views
0

배치 스크립트로 txt 파일을 편집하고 싶습니다. 나는 온라인으로 보았고 나의 요구에 맞게 몇 가지 예를 조정하려고 시도했다. 그러나 프로그래밍 기술이 없으며 프로그램을 작동시키지 못했습니다.배치 프로그램으로 txt 파일을 찾고 편집하십시오.

여기 내 문제입니다. 나는 파일의 어떤 시점에서이 포함 된 txt 파일이 있습니다

I는 다음과 같이 그것을 변경할
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 

: 그러니까 기본적으로 두 줄 전에 "REALEIGENVALUES"를 추가

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 

을 " Subcase Mode 버클 링 고유 값 "을 사용하지만 이전에 행에서 whats를 삭제하지 않습니다. 즉

.에 두 개의 새로운 행을 추가 나는 다음을 시도하지만, 그것은 단지 내가이 모습 다른 스크립트를 시도 새 텍스트 파일

@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 

에 처음 8 선을 인쇄하지만,이 어느 쪽도 일하지 않았다.

@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) 

누군가 내 스크립트를 수정하면 크게 도움이 될 것입니다. 내가 질문을 오해

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 

답변

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

당신이 yourfile.txt의 시작 부분에 두 줄을 추가하려는 경우,이 시도

@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 

인가 이게 무슨 뜻이야?

+0

죄송합니다. 매우 명확하지 않았습니다. 나는 파일의 시작 부분에 아무것도 원하지 않습니다. 파일에 "Subcase Mode Buckling Eigenvalue"가있는 곳을 검색하려면 프로그램이 필요하다. 그런 다음 위의 두 줄을 "R E L L I G E N V L L E S"라고 추가하십시오. "Subcase Mode Buckling Eigenvalue"텍스트는 파일에 수백 줄이됩니다. – iain

0

사과 경우 만 : 감사 이안

관련 문제