문제

다음을 사용하여 각 파일을 반복하는 경우

@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

의 대답은 확실히 당신이 원하는 것 중에서 가장 쉬운 것입니다. 그러나 나는 추가하고 싶었다 :

하지 않다 set 내부의 변수 ()a for 이전에 발행 한 경우가 아니라면 바로 사용할 것으로 예상됩니다.

setlocal ENABLEDELAYEDEXPANSION

그리고 당신은 사용 중입니다 ! 변수 이름을 래핑하기 위해 % 대신. 예를 들어,

@echo off
setlocal ENABLEDELAYEDEXPANSION

FOR %%f IN (*.*) DO (

   set t=%%f
   echo !t:~-3!

)

체크 아웃

set /?

더 많은 정보를 위해서.

다른 대안은 서브 루틴에 전화하여 set, 처럼 팍스 쇼.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top