루프

2009-07-08 8 views
32
나는 배치 파일에서 루프를 들어 다음과 같은 한

에 대한 일괄 파일 이름을 가져 오기 :루프

for /R c:\test\src %%i IN (*.*) DO (
MOVE %%i C:\test\destination 
ECHO %%i 
exit 
) 

에코의 결과는 예는 전체 파일 경로를 출력합니다 C : \ 폴더 이름 \ 파일 이름은 내가 필요를 에코 아웃에만 파일 이름. 내가 거기에 파일 이름을 줄 특정 명령이 있습니까? 감사합니다.

+6

BTW,이 세기에 만들어진 윈도우의 버전을 사용하는 경우, 그것을하지 않습니다 DOS를 사용하고 있다면 Windows 명령 프롬프트입니다. – whatsisname

답변

65

명령 확장을 사용하면 (Windows XP 이상, 대략적으로) % - nF 구문을 사용할 수 있습니다 (여기서 F는 변수이고 ~ n은 해당 이름 요청입니다).

FOR /R C:\Directory %F in (*.*) do echo %~nF 

은 파일 이름 만 표시합니다.

+13

파일 확장자를 보려면 % ~ xF를 끝에 추가하십시오. – akf

+33

확장자가있는 파일 이름을 얻으려면 % ~ nxf를 사용하십시오. – Helen

+0

IIRC에서 대부분의 확장 기능은 적어도 NT 3.5 이후 CMD.EXE에 있었으며 일부는 NT의 pre-gui 베타 릴리스에도 포함되어있었습니다. NT 팀은 "새로운"버전의 Windows를 구축 할 때 손상 요인의 고통을 모두 보존 할 이유가 없음을 알았습니다. 그러나 그들은 오랫동안 문서화 팀에 대해 이야기하는 것을 괴롭히지 않는 것처럼 보였습니다. – RBerteig

4

또는 Just % ~ F는 전체 경로와 전체 파일 이름을 제공합니다. 예를 들어

, 현재 디렉토리에있는 모든 * .ax 파일을 등록하려면 ....

FOR /R C:. %F in (*.ax) do regsvr32 "%~F" 

3

내가 :-) Win7에 (64 비트)에서 아주 잘 작동 조금 늦었지만 다음과 같이 사용했습니다.

dir /B *.* > dir_file.txt 

간단한 FOR 루프로 파일 이름을 추출하여 사용할 수 있습니다. 예컨대 :

for /f "tokens=* delims= " %%a in (dir_file.txt) do (
gawk -f awk_script_file.awk %%a 
) 

또는 바르로 저장 나중에 사용하기 위해 (!!! N1! N2 .. Nn 개의!). 예 :

set /a N=0 
for /f "tokens=* delims= " %%a in (dir_file.txt) do (
set /a N+=1 
set v[!N!]=%%a 
) 
+0

gawk는 어디서나 사용할 수 없습니다. – Li3ro

0

당신이 두 파일 이름 (전용) 및 확장을 유지하려는 경우, 당신은 %~nxF 사용할 수 있습니다 :

FOR /R C:\Directory %F in (*.*) do echo %~nxF