당신은 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
setlocal
및 endlocal
의 사용은 다움하지 않은이 마지막 ::에서 최단 대답
@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, 그들은 배치 파일이 끝날 때 변수가 죽어 있는지 확인합니다.
나는 'abc 24 xyz'라고 생각합니다. –
예. 맞습니다. 내 실수. – Nalu