2012-11-10 2 views
0

특정 줄에 텍스트 파일을 업데이트해야하는 배치 스크립트를 작성하고 있습니다. 예 : 텍스트 파일 줄 번호 30은 "080-22368865 Ware house"라고 말합니다. 스크립트를 실행 한 후 사용자가 명령 프롬프트에 "080-22368865" 022-26986528 " 그러면 텍스트 파일에 줄 번호 30에"022-26986528 Ware-house "가 표시됩니다.사용자가 입력 한 값으로 특정 줄 번호의 텍스트 파일에서 업데이트 할 일괄 처리 스크립트

미리 감사드립니다.

+0

그래서, 당신은 무엇을 시도 했습니까? 무슨 문제가 있니? jst를 시작점으로 삼기를 원한다면 문제를보다 정확하게 설명하십시오. 그게 윈도우 야? 항상 같은 줄 번호입니까? 스크립트를 실행 한 후 사용자가 입력 한 내용으로 어떻게 변경할 수 있습니까? –

답변

1

귀하의 질문에 여러 세부 사항이 누락되어 있으므로 아래의 배치 파일은 단지 출발점에 불과합니다. 줄 번호는 첫 번째 매개 변수에 지정됩니다.

@echo off 
setlocal EnableDelayedExpansion 
call :editLine %1 <input.txt> output.txt 
goto :EOF 

:editLine num 
set /A skipLines=%1-1 
if %skipLines% gtr 0 (
    rem Copy lines before the target 
    for /L %%i in (1,1,%skipLines%) do (
     set line= 
     set /P line= 
     echo(!line! 
    ) 
) 
rem Edit the target line 
set line= 
set /P line= 
echo Line %1: "!line!" 
for /F "tokens=1*" %%a in ("!line!") do (
    set /P firstToken=Enter new value for "%%a": 
    echo !firstToken! %%b 
) 
rem Copy the rest of lines 
:nextLine 
    set line= 
    set /P line= 
    if not defined line exit /B 
    echo !line! 
goto nextLine 

대상 행 다음에 빈 행이 있으면 이전 프로그램이 실패합니다. 복사 프로세스가 그 시점에서 중지됩니다. 전에 말했듯이,이 세부 사항은 수정 될 수 있습니다 ...

관련 문제