문제
다음을 사용하여 각 파일을 반복하는 경우
@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
, 처럼 팍스 쇼.
제휴하지 않습니다 StackOverflow