2017-11-02 1 views
-1

첫 번째 줄없이 파일을 복제하려고합니다. 하지만 내용을 제대로 복사 할 수 없습니다. 배치 파일의 빈 줄을 건너 뛰지 않음

내가 시도하는 방법입니다

for /f "tokens=* skip=1" %%i in (input.txt) do (
    echo %%i >> "output.txt" 
) 

언제이이 input.txt를 :

test1 

1. test item1 

2. test item2 

3. test item3 

그것은 저에게이 있습니다 :

1. test item1  
2. test item2 
3. test item3 

예상 출력 :

1. test item1 

2. test item2 

3. test item3 

어떻게해야합니까? for /f이 작업을 수행 할 수있는 방법이 없습니다

답변

2
@ECHO OFF 
SETLOCAL 
SET "sourcedir=U:\sourcedir" 
SET "destdir=U:\destdir" 
SET "filename1=%sourcedir%\q47067655.txt" 
SET "outfile=%destdir%\outfile.txt" 

(FOR /f "tokens=1*skip=1delims=:" %%a IN ('findstr /n /r ".*" "%filename1%"') DO ECHO(%%b)>"%outfile%1" 
(FOR /f "tokens=1*skip=1delims=]" %%a IN ('find /n /v "" ^<"%filename1%"') DO ECHO(%%b)>"%outfile%2" 
(more +1 "%filename1%">"%outfile%3") 

GOTO :EOF 

상황에 맞게 sourcedir의 설정을 변경해야합니다. 상황에 맞게 sourcedirdestdir의 설정을 변경해야합니다.

내 테스트를 위해 데이터가 들어있는 q47067655.txt 파일을 사용했습니다.

는 %의 OUTFILE의 %로 정의 파일을 생성합니다 *

for /f 빈 줄을 건너 뛰고, 그래서 라인을 번호로 비어 있지 않은 보장합니다.echo(%%a가 비어 %%a

귀하의 예제 출력 빈 줄을 생산할 것이라고

참고는 skip PED 라인과 다음 사이에 빈 줄을 생략합니다.

1

for /?의 설명서는 아주 단호 :

빈 줄은 건너 뜁니다. 이 같은 간단한 요구를 들어

, 그것은 특정 크기까지 (임의의 선에서 시작하여 실제로 페이지 파일이 리디렉션의 뜻 경우 윈도우 more 프로그램으로 충족 될 수 어쨌든). 더 복잡한 작업의

c:\users\paxdiablo> more +2 input.txt >output.txt 
c:\users\paxdiablo> type output.txt 
1. test item1 

2. test item2 

3. test item3 

또는 파일 more 페이징없이 처리 할 수있는 것보다 더 큰 경우, 당신은 아마 (솔직히 brain- 사용을 중지해야한다 : 즉 전체 스크립트가 하나의 명령으로 대체 될 수 있음을 의미 죽은) 오래된 Windows 도구를 사용하고 대신 PowerShell로 전환합니다. (스크립트가 현재 임의의 복잡한 될 수 있지만, 사건에 대한) 그런 당신처럼 뭔가를 할 수있는 후 sed 또는 awk (GnuWin32 참조)로 자신에게 윈도우에 대한 몇 가지 괜찮은 텍스트 처리 도구를

또는 얻을 :

c:\users\paxdiablo> awk "NR>2{print}" input.txt >output.txt 
+0

'more'명령에도 오류가 있습니다. 자동으로 일시 정지하고 65534 줄에서 사용자 입력을 기다립니다. – Squashman

+0

**'More' ** 명령은 항상 탭을 삭제합니다. 기본적으로 각 공백을 8 공백으로 바꾸는 대신 공백 수는 **'/ T' ** 옵션을 사용하여 변경할 수 있습니다. – Compo

관련 문제