와일드 카드 일치가있는 내용을 기반으로 텍스트 파일의 이름을 바꾸는 Windows 배치 파일 가져 오기

스테인

파일 내용의 밑줄과 문자를 파일 이름에 추가하여 텍스트 파일의 이름을 바꾸는 다음 배치 파일이 있습니다.

내용은 위치 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
Mofi

각 * .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] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관