2013-05-15 3 views
0

나는 first.properties 파일을 가지고 있는데 그 파일을 읽으면서 첫 번째 5 줄을 건너 뛰고 나머지 줄은 first.properties 인 새 파일을 만듭니다. 이것은 잘 작동합니다. 그러나 새로 생성 된 파일의 각 행에 공백이 생깁니다. 나는이 공간을 제거하고 싶다.일괄 처리 스크립트에서 문자열의 앞뒤 공백을 제거하려면 어떻게해야합니까?

나는 다음과 같은 코드 조각을 사용하고 다음과 같이

@echo off 
set new=0 
setlocal ENABLEDELAYEDEXPANSION 
for /F "skip=5" %%L in (first.properties) do (
echo %%L>>NewProjectsInfo.properties 
) 
endlocal 
pause 

first.properties은 다음과 같습니다

name=abcd 
number=bcde 
address=cdef 
mobile=efgh 
worklocation=ghij 

이 공백을 제거하는 저를 도와주세요.

+0

'first.properties' (6 행 이후)의 항목에 선행 및/또는 후행 공백이 있음을 올바르게 알고 있습니까? 게시 한 라인 (5 개만)은 그렇지 않았기 때문입니다. 신비하게도 코드를 생성하면 코드가 놀라워 질 것입니다. – zb226

+0

이것은 문자를 추가한다는 점에서 사용자의 질문과 다소 뒤떨어져 있지만 도움이 될 수 있습니다. http://stackoverflow.com/questions/10021464/batch-file-to-add-characters-to-beginning-and-end-of -yach-line-in-txt-file – Dave

답변

1

코드에 NewProjectsInfo.properties 뒤에 공백이 있습니다. 그것이 제거되면, 예상대로 작동합니다.

슬픈 것 같지만, 일괄 처리는 명령을 전체 라인으로 해석합니다. &은 리디렉션 부분을 분리합니다. 예를 들어, bash에서 명령은 > 심볼 자체에서 종료됩니다.

echo hello >somefile.txt worldhello worldsomefile.txt에 넣습니다.

+0

굉장합니다 ... 잘 작동합니다 ... 지원해 주셔서 감사합니다. – Thiru

2

시도해보십시오. >> 문자 바로 앞에 숫자가있을 때 문제가있을 수 있습니다. ENABLEDELAYEDEXPANSION을 사용하고 있지 않으므로 제거했습니다.

@echo off 
set new=0 
setlocal 
for /F "skip=5 delims=" %%L in (first.properties) do (
>>NewProjectsInfo.properties echo %%L 
) 
endlocal 
pause 
0
@ECHO OFF 
SETLOCAL 
(
FOR /f "skip=5 delims=" %%i IN (rltsf.txt) DO CALL :unpad %%i 
)>output.txt 

FC rltsf.txt output.txt 
GOTO :eof 

:unpad 
ECHO %* 
GOTO :eof 

이 접근 seemst 작동합니다,하지만 난 그게 라인 내용을 조금 민감 할 수 공상. 대표 데이터가 있는지 쉽게 테스트 할 수 있습니다.

관련 문제