모든 유형의 파일이 포함된 폴더가 있습니다. 내 폴더 경로가 E:/temp
.
.avi
유형 파일에 대해서만 txt 파일을 만들고 txt 파일 이름을 영화 이름으로 지정 하고 싶습니다 . 따라서 폴더에 20개의 클립 파일이 있는 경우 .avi
20개의 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"
달리다행복하게 만들다. 새 텍스트 파일에는 이중 확장자가 있지만 필요한 경우 이를 우회할 수 있는 방법이 있습니다.