배치를 사용하여 특정 유형의 파일에 대한 txt 파일 만들기

배치를 사용하여 특정 유형의 파일에 대한 txt 파일 만들기

모든 유형의 파일이 포함된 폴더가 있습니다. 내 폴더 경로가 E:/temp.

.avi유형 파일에 대해서만 txt 파일을 만들고 txt 파일 이름을 영화 이름으로 지정 하고 싶습니다 . 따라서 폴더에 20개의 클립 파일이 있는 경우 .avi20개의 txt 파일을 열고 각 txt 파일의 이름은 클립 이름을 따서 지정됩니다.

또한 txt 파일 안에 "HAPPY"라는 단어를 써야 합니다(모든 txt 파일에 대해 동일함).

배치 파일을 사용하는 스크립트는 무엇입니까?

답변1

FOR작업하려는 요소를 반복하려면 을 사용해야 합니다 . 보다배치 파일에서 와일드카드와 일치하는 파일을 반복하는 방법자세한 내용은.

해당 부분을 해결한 후에는 파일의 파일 이름을 만들고 싶을 것입니다 .txt. 여기서는 명령줄 문서가 FOR도움이 될 수 있습니다.

In addition, substitution of FOR variable references has been enhanced.
You can now use the following optional syntax:

    %~I         - expands %I removing any surrounding quotes (")
    %~fI        - expands %I to a fully qualified path name
    %~dI        - expands %I to a drive letter only
    %~pI        - expands %I to a path only
    %~nI        - expands %I to a file name only

마지막 항목은 우리가 원하는 것입니다. 우리는 을 잘라내고 싶기 .avi때문에 변수에 를 사용하여 ~n이름만 가져옵니다. 이것이 바로 %%~nf.txt의 유래입니다.

%%f현재 파일 이름인 으로 시작합니다 . 그런 다음 확장 부분을 잘라내고 %%~nf압정으로 붙입니다 .txt. 완료:%%~nf.txt

마지막 문제는 다음과 같이 한 줄로 모든 문제를 해결하려고 할 때입니다.

FOR %%f IN (*.avi) DO ECHO HAPPY > %%~nf.txt

쉘이 해석하고 즉시 해당 파일로 출력을 시작하기 때문에 작동하지 않습니다 >. 이는 우리가 원하는 것이 아닙니다. 우리는 모든 단일 파일에 대해 처리되기를 원하므로 ECHO간단히 여러 줄로 나누었습니다.

@ECHO OFF

REM Iterate over all *.avi file in the current directory
FOR %%f IN (*.avi) DO (
    REM Cut off the extension from %%f, tack on .txt and 
    REM use it as the filename for our HAPPY output
    ECHO HAPPY > %%~nf.txt
)

답변2

라는 이름의 텍스트 파일을 만듭니다.행복해요.txt"를 포함하는행복하다".라는 배치 파일을 만듭니다.makehappy.cmd다음을 포함합니다:

for %%i in (*.avi) do copy happy.txt "%%i.txt"

달리다행복하게 만들다. 새 텍스트 파일에는 이중 확장자가 있지만 필요한 경우 이를 우회할 수 있는 방법이 있습니다.

관련 정보