2015-01-02 4 views
3

텍스트 파일에 파일 목록이 있으므로 존재하지 않는 파일에 대한 보고서를 생성하고 싶습니다. 나는 C "와 같은 오류가 내 출력 파일에서파일 목록이 있는지 확인하기위한 배치 파일. 공백으로 작동하지 않습니다.

FOR /F %%f IN (filelist.txt) DO (IF EXIST %%f (ECHO %%f exists) ELSE (ECHO %%f doesn't exist >> C:\doesntexist.txt)) 

: 그러나 나는 그것이 경로의에 공백이있는 모든 파일을 작동하지 않는 다음 코드를 사용하여 배치 파일을 만드는 시도 \ 문서하지 않습니다 파일 이름 전체를 구문 분석하지 못했음을 나타냅니다.

경로의 공백을 포함하여 모든 파일을 검사 할 수 있도록이 문제를 해결하려면 어떻게해야합니까?

답변

0

당신은 사용해야합니다 따옴표 : 문자열에 공백과 같은 구분 기호를 포함 할 수있는 가능성이 어디

FOR /F %%f IN (filelist.txt) DO (
    IF EXIST "%%f" (ECHO "%%f" exists) ELSE (ECHO %%f doesn't exist >> C:\doesntexist.txt) 
) 
+0

차이가없는 것처럼 보입니다. –

+0

네가 맞아, 파일에서 전체 줄을 읽는 것을 고려하기 위해''delims = "'를 놓쳤다! –

6

, 당신은 필요 "enclose that string in quotes"

for /ftokenises는 기본적으로 수신 데이터에 (예 : %%f)에 할당되고, 다음은 %%g 등으로 지정됩니다.

당신은

귀하의 경우

, 당신은 아무 구분 기호와 단지 하나의 토큰을 원하는 (for /?를 참조 프롬프트에서) 얼마나 많은 토큰 및 명령 수정을 사용하여 구분 기호 (들) 및 기타 분석 특성을 제어 할 수 있습니다 그래서

FOR /F "delims=" %%f IN (filelist.txt) DO (IF EXIST "%%f" (ECHO %%f exists) ELSE (ECHO %%f doesn't exist >> C:\doesntexist.txt)) 

filelist.txt 공백이 포함 된 경우 작은 여분의 합병증이 있습니다 (기본값은 1 개 토큰 구분 기호 = 구분이다). 이 경우에는 먹은 이유

FOR /F "usebackqdelims=" %%f IN ("filelist.txt") DO (IF EXIST "%%f" (ECHO %%f exists) ELSE (ECHO %%f doesn't exist >> C:\doesntexist.txt)) 

위에서 언급 된 문서 for /?에 "설명"해야 할 것입니다.

+0

도움 주셔서 감사합니다. 그것도 효과가 있으며 일종의 의미가 있습니다. D –

관련 문제