파일 내용의 밑줄과 문자를 파일 이름에 추가하여 텍스트 파일의 이름을 바꾸는 다음 배치 파일이 있습니다.
내용은 위치 56에서 파일의 첫 번째 행에서 5 자입니다.
내 예에서는 단일 파일 (1.spl)에 대해이 작업을 수행 할 수 있지만 폴더의 모든 * .spl 파일에 대해이 파일을 실행하는 방법을 알아낼 수 없습니다.
@ECHO OFF
SETLOCAL EnableDelayedExpansion
for /F "delims=" %%i in (1.spl) do (
set Z=%%i
goto BREAK1
)
:BREAK1
SET Z=%Z:~56,5%
RENAME 1.spl 1_%Z%.spl
각 * .spl 파일에 대해 파일 이름을 바꾸는 서브 루틴을 호출 하는 다른 FOR 루프를 사용할 수 있습니다 .
@echo off
setlocal EnableExtensions DisableDelayedExpansion
for /F "delims=" %%# in ('dir *.spl /A-D /B 2^>nul') do call :RenameFile "%%#"
endlocal
goto :EOF
:RenameFile
for /F "usebackq delims=" %%I in (%1) do set "FirstLine=%%I" & goto GetNamePart
:GetNamePart
set "NamePart=%FirstLine:~56,5%"
if not exist "%~n1_%NamePart%%~x1" ren %1 "%~n1_%NamePart%%~x1"
goto :EOF
주 코드 의 FOR 루프 (세 번째 줄) 는 이름 바꾸기 작업을 시작하기 전에 DIR 명령을 사용 하여 * .spl 파일 목록을 가져옵니다. FOR 루프가 실행되는 for %%# in (*.spl) do ...
동안 디렉토리 항목이 변경됨을 의미하는 현재 디렉토리의 파일 이름이 바뀐 것처럼 여기에서 사용하는 것은 권장되지 않습니다 . 강력하게 얻을하는 것이 좋습니다 처음 사용 * .spl입니다 파일의 전체 목록 DIR을 하고 다음 디렉토리에 만든 파일 이름 바꾸기에이 목록의 독립을 처리합니다.
주 FORRenameFile
는 목록에서 각 파일을 처리하기 위해 서브 루틴 을 호출 합니다.
동일한 이름의 기존 파일이 이미있는 경우 파일 이름이 변경되지 않습니다. 이것은 가능성이 거의 없지만 그럼에도 불구하고 먼저 확인해야합니다.
배치 코드는 배치 파일이 디렉토리에서 두 번 이상 실행되는 경우 파일 이름에 밑줄과 첫 번째 줄의 5 개 문자를 여러 번 추가하는 것을 방지하지 않습니다. 파일 이름을 여러 번 변경하지 않으려면 추가 IF 조건이 필요합니다.
사용 된 명령과 그 작동 방식을 이해하려면 명령 프롬프트 창을 열고 다음 명령을 실행하고 각 명령에 대해 표시된 모든 도움말 페이지를 매우주의 깊게 읽으십시오.
call /?
echo /?
endlocal /?
for /?
goto /?
if /?
ren /?
set /?
setlocal /?
서브 루틴의 FOR 루프에 &
사용되는 연산자 를 사용 하면 단일 명령 줄에서 여러 명령을 실행할 수 있습니다. 자세한 내용은 Windows 배치 파일 을 사용하여 여러 명령이있는 단일 줄을 참조 하십시오.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다