2011-01-11 4 views
3

폴더의 모든 텍스트 문서에 배치 스크립트를 사용하고 싶습니다. 내가 출력 좋아할 것은배치 스크립트에서 파일 이름을 반복하십시오.

@ECHO off 
title Test 
set dir1=C:\Users\Family\Desktop\Example 

:Start 
cls 
echo 1. test loop 
echo 2. Quit 
set /p choice=I choose (1,2): 
if %choice%==1 goto test 
if %choice%==2 exit 

:test 
cls 
echo running loop test 
FOR %%n in (%dir1% *.txt) DO echo %dir1%\%%n 
echo Done 
pause 

: 이것은 내가 지금까지 관리가 무엇

running loop test 
C:\Users\Family\Desktop\Example\doc 1.txt 
C:\Users\Family\Desktop\Example\doc 2.txt 
Done 

하지만이 얻을 :

running loop test 
C:\Users\Family\Desktop\Example\C:\Users\Family\Desktop\Example 
C:\Users\Family\Desktop\Example\doc 1.txt 
C:\Users\Family\Desktop\Example\doc 2.txt 
Done 

답변

11

주요 문제가 보인다을 ~ 사이의 공백 (% dir1 % * .txt)

수 있습니다

@ECHO off 
title Test 
set "dir1=C:\Users\Family\Desktop\Example" 

:Start 
cls 
echo 1. test loop 
echo 2. Quit 
set /p choice=I choose (1,2): 
if %choice%==1 goto test 
if %choice%==2 exit 

:test 
cls 
echo running loop test 
FOR %%X in ("%dir1%\*.txt") DO echo %%~dpnX 
echo Done 
pause 

따옴표는 공백이나 경로의 다른 특수 문자와 관련된 문제를 방지하기위한 것입니다.

편집 :
%%~dpnX
d = 드라이브 (에 %%X의 파일 이름을 확장을위한 C :)
p = 경로 (\ 사용자 \ 가족 \ 바탕 화면 \ 예)
n = 파일 이름 (test1) (확장자 없음)

f = 전체 파일 이름 (C : \ Users \ Family \ Desktop \ Example \ test1.txt).

여기서 가능한 수정자를 설명합니다. FOR /?

+0

감사합니다. 완벽하게 작동했습니다. %% ~ dpfX를 나에게 설명해 주시겠습니까? – Krayons

+3

'%% ~ nX' 파일명 (test1), 파일명은'%% ~ nxX' (test1.txt)입니다. – hlcs

+1

명확히하기 : 그의 코드에서 '%% X'는 발견 된 전체 파일 이름입니다. 다른 조각'~ dpn'은'%% X'의 수식어입니다. 그래서 2 번째 사용자가 말한 것처럼 변수에'~ n' 수정자를 사용하여'echo %% ~ nX'를 호출하여 파일을 출력합니다. –

관련 문제