내가 사용하여 각 파일을 반복하고있는 경우 :배치 찾기 파일 확장자
@echo off
FOR %%f IN (*\*.\**) DO (
echo %%f
)
는 어떻게 각 파일의 확장자를 인쇄 할 수 있을까? 임시 변수에 %% f를 할당 한 다음 코드를 사용하여 시도 : echo "%t:~-3%"
인쇄했지만 성공하지 못했습니다.
내가 사용하여 각 파일을 반복하고있는 경우 :배치 찾기 파일 확장자
@echo off
FOR %%f IN (*\*.\**) DO (
echo %%f
)
는 어떻게 각 파일의 확장자를 인쇄 할 수 있을까? 임시 변수에 %% f를 할당 한 다음 코드를 사용하여 시도 : echo "%t:~-3%"
인쇄했지만 성공하지 못했습니다.
FOR 명령에는 파일 이름을 수정할 수있는 몇 가지 기본 제공 스위치가 있습니다. 다음을 시도해보십시오 자세한 내용
@echo off
for %%i in (*.*) do echo "%%~xi"
이, 수식의 전체 목록을 얻을 수 help for
를 사용 - 꽤 몇 가지가 있습니다!
이것은 눈부시게 빠른 아니다 있지만, 작동 :
@echo off
for %%f in (*.*) do call :procfile %%f
goto :eof
:procfile
set fname=%1
set ename=
:loop1
if "%fname%"=="" (
set ename=
goto :exit1
)
if not "%fname:~-1%"=="." (
set ename=%fname:~-1%%ename%
set fname=%fname:~0,-1%
goto :loop1
)
:exit1
echo.%ename%
goto :eof
Sam의 대답은 확실히 당신이 원하는 무엇을위한 가장 쉬운 방법입니다. 하지만 추가하고 싶었 :
는하지 마십시오 set
변수를 for
의 ()
년대 안에 당신이 이전에
setlocal ENABLEDELAYEDEXPANSION
를 발행하지 않는 한, 바로 사용할 것으로 예상하고 대신
!
를 사용하는 of %를 사용하여 변수 이름을 래핑합니다. 예를 들어, 추가 정보를 알아
set /?
@echo off
setlocal ENABLEDELAYEDEXPANSION
FOR %%f IN (*.*) DO (
set t=%%f
echo !t:~-3!
)
확인합니다.
다른 대안은 Pax과 같이 set
을 수행하는 서브 루틴을 호출하는 것입니다.