2012-08-31 4 views
0

.batch 파일을 사용하여 a.txt에서 b.txt로 데이터를 복사하려고합니다. 하지만 a.txt에서 모든 데이터를 원하지 않습니다. 난 그냥 perticular 데이터를 복사하려고합니다.배치 스크립트에서 한 파일에서 다른 파일로 특정 데이터를 복사하는 방법

예를 들어

:

b.txt :

abc 21 xyz 
a.txt이 내가 그 a.txt이를 읽고 새로운 b.txt에 특정 데이터를 복사 할 지금

line 1:this is a.txt file 
line 2: name= abc 
line 3: age= 24 
line 4: country= xyz 
line 5: contact no= 123456778 
line 6: end of a.txt 

을 포함

제안 사항이 있으십니까?

도움 주셔서 감사합니다.

NAREN

+0

나는 'abc 24 xyz'라고 생각합니다. –

+0

예. 맞습니다. 내 실수. – Nalu

답변

2

당신은 abc 24 xyz을 의미 가정 할 것이다. (가장 짧은 답변 하단)

이것은 가장 유연하고 정교한 변수를 제공합니다.

@echo off 
setlocal enabledelayedexpansion 

:: Just making sure that %data% is empty 
set data= 

for /f "tokens=1,2* delims==" %%x in (a.txt) do call :work %%x "%%y" 

:: Removes leading space and sends to b.txt 
echo %data:~1%>b.txt 
goto :eof 

:work 
set var=%1 
set val=%~2 

:: Remove any leading spaces. 
:work-loop 
if "!val:~0,1!"==" " (
    set val=!val:~1! 
    goto :work-loop 
) 

if "%var%"=="name" set data=%data% %var% 
if "%var%"=="age"  set data=%data% %var% 
if "%var%"=="country" set data=%data% %var% 

goto :eof 

약간 짧습니다.

@echo off 
setlocal enabledelayedexpansion 

set data= 
for /f "tokens=1,2* delims==" %%x in (a.txt) do call :work %%x "%%y" 

:: Removes leading space and sends to b.txt 
echo %data:~1%>b.txt 
echo %data%>b.txt 

goto :eof 

:work 
set var=%1 
set val=%~2 

:since leading spaces have not been removed, there need be no space between %data% and %var% 
if "%var%"=="name" set data=%data%%var% 
if "%var%"=="age"  set data=%data%%var% 
if "%var%"=="country" set data=%data%%var% 

goto :eof 

setlocalendlocal의 사용은 다움하지 않은이 마지막 ::에서 최단 대답

@echo off 
setlocal 
for /f "tokens=1,2* delims== " %%x in (a.txt) do (
    if "%%x"=="name" set %%x=%%y 
    if "%%x"=="age" set %%x=%%y 
    if "%%x"=="country" set %%x=%%y 
) 
echo %name% %age% %country%>b.txt 
endlocal 

공간을 선도하고 이 %의 데이터를 에코 b.txt로 전송 삭제합니다 : ~ 1 %> B .txt icary, 그들은 배치 파일이 끝날 때 변수가 죽어 있는지 확인합니다.

+0

정말 유익한 답변입니다. . 고마워. :) – Nalu

+0

방금 ​​두 개의 긴 솔루션에서'data = % data % % var %'는'data = % data % val %'이어야하고'data = % data %% var %'는'data = % data %% val %'. –

관련 문제