
Windows 배치 스크립트를 사용하여 텍스트 파일에서 마지막 줄을 제거하고 싶습니다. 마지막 줄은 항상 'TRAILER|'와 같습니다. 어떻게 하면 달성할 수 있나요? 내 .txt 파일은 다음과 같습니다.
1220|6963|트럭|5760|
1221|6964|트럭|1440|
1220|6965|트럭|2880|
1221|6966|트럭|2880|
1221|6967|트럭|2880|
트레일러|5|
답변1
나는 다음과 같이 작성하여 귀하의 방식대로 시도했습니다.
findstr /v TRAILER %SFTP_INDIR%\Location*.txt > %IN_DIR%\loc.txt
여기
%SFTP_INDIR% = D:\Batch\Batch_FWK\SFTP\inbox.
출력 파일 loc.txt에는 현재 마지막 레코드가 포함되어 있지 않지만
TRAILER|5|
출력 파일에 다음과 같이 각 레코드가 인쇄되었습니다.D:\Batch\Batch_FWK\SFTP\inbox\Location.20150528060210.txt:1220|6963|TRUCK|5760|
findstr /v TRAILER filename >newfilename
당신이 원하는대로 작동오직마지막 줄을 제거할 때하나의파일.
이 때문입니다:
두 개 이상의 파일을 검색하면 결과에는 해당 텍스트가 발견된 파일 이름이 앞에 붙습니다. 요청이 명시적으로 단일 파일에 대한 것이었거나 파이프 입력 또는 리디렉션된 입력을 검색하는 경우 파일 이름은 인쇄되지 않습니다.
이 제한을 해결하려면 for
명령을 사용하여 여러 단일 파일을 처리하고 결과를 하나의 파일로 출력할 수 있습니다.
배치 파일에서 다음 명령을 시도해 보십시오.
for /f "tokens=*" %%a in ('dir /b "%SFTP_INDIR%\Location*.txt"') do findstr /v TRAILER %%a >> %IN_DIR%\loc.txt
명령줄에서 실행하는 %%
경우 %
.
원천findstr