2017-04-05 3 views
1

그래서 기본적으로 형식의 파일이 있으면이 작업을 수행하고 그렇지 않으면 수행하십시오.Windows/일괄 처리/CLI | 왜 exist/else 문이 변수와 함께 작동하지 않는가?

.bat 파일을 토글하는 경우, cmd 창은 끝에 pause조차 깜박입니다.

+0

열고 cmd를 윈도우에서 배치 파일을 드래그하고 실행, 당신은 오류를 볼 수 있습니다. 또한, 존재하지 않는 경우, 이미 찾은 파일을 반복합니다. –

+0

[대답 아래] (http://stackoverflow.com/a/43226133)에 지적 된 구문 오류를 정정 한 후에는 else 절을 ​​실행하지 마십시오. 왜냐하면'for %% h'는 기존 값을 반환하기 때문입니다 파일 만; 코드가 의도 한 바가 무엇인지에 대한 명확한 설명을 제공하면 도움이 될 것입니다. – aschipfl

답변

0

명령의 일부가 아니며 그 행이 무시되거나 오류 메시지가 인쇄되면 행의 시작 부분에 else이 삽입되면 닫는 대괄호가 필요합니다. 그리고 바깥 쪽에서 명령 출력을 구문 분석하려면 for /f을 사용하고, 그렇지 않으면 for을 사용해야합니다. 그리고이 같은 시도 if exist 대신 if exists

의 사용해야합니다,

set format1=txt 
set format2=pdf 

for %%h in (*.%format1%) do ( 
    if exist "%%h" (
     for %%i in (*.%format2%) do ( 
      copy "%%i" "pdf\%%i" 
     ) 
    ) else (
     copy "%%h" "txt\%%h" 
    ) 
) 
+0

안녕하세요, 답장을 보내 주셔서 감사합니다. 많이 변경하지 않았어. 그래도 작동이 안되는. – user3108268

+0

@ user3108268 - 내 업데이트를 확인하십시오. – npocmaka

+0

오, 나는 존재도 오타가 있었는지 안다? – user3108268