
일련의 ASCII 파일을 병합해야 하고 이 배치 파일을 사용하려고 했습니다. 이 배치 파일은 모든 파일을 결합하고 각 파일에서 헤더를 제거하는 새 파일을 생성합니다.
@echo off
FOR /F "delims=*" %%i in (header.txt) do @echo %%i
FOR /F "skip=1 delims=*" %%i in (A1.DAT A2.DAT A3.DAT A4.DAT A5.DAT) do @echo %%i
이 배치 파일은 작동하지만 배치 파일에 각 파일 이름을 제공하는 대신 *.dat와 같은 와일드카드를 사용하고 싶습니다. 개별 파일 이름을 입력하는 대신 와일드카드를 사용하는 방법을 알려줄 수 있는 사람이 있습니까?
답변1
다음 코드 조각을 사용해 보세요.
@echo off
SETLOCAL EnableExtensions
FOR /F "delims=" %%i in (header.txt) do @echo %%i
FOR %%I in (*.dat) do @FOR /F "usebackq skip=1 delims=" %%i in ("%%~I") do @echo %%i
예를 들어 다음과 같이 사용하십시오.>"1127756merged.txt" 1127756.bat
여기
FOR %%I in (*.dat)
.dat
루프는 현재 디렉터리 폴더의 모든 파일 목록을 반환합니다 .- 이 목록은동적즉, 처리 중에 폴더에 추가한 파일도 로드합니다.
- 얻기 위해공전목록을 작성하고
FOR /F "delims=" %%I in ('dir /B *.dat')
대신 사용하세요.
- 중첩
%%i
루프는 모든 파일을 순서대로 처리합니다. - ;
delims=
대신에 메모를 남겨주세요 .delims=*
(그리고 생각해보세요: 아마도 이 제안이 틀렸을 수도 있습니다).
자원(필수 읽기):
- (명령 참조)Windows CMD 명령줄의 AZ 인덱스
- (도움이 되는 특징)Windows CMD 셸 명령줄 구문
- (
%~I
등 특별 페이지)명령줄 인수(Parameters) - (특설 페이지)EnableDelayedExpansion
- (
>>
,>
등 특별 페이지)리디렉션