2014-08-28 3 views
0

내가이 존재하지 않는 파일을 확인하는 데 사용 본 적이 존재하지 않는 확인 :오류가 발생하지 않고, 파일이

FOR %%F IN (myfile) DO del %%F 

내가 그것을 볼 수있는 것은에서 방법을 존재하는 경우보다 보통 이상의 장점이있다 파일 이름의 인스턴스가 하나 뿐인 것입니다.

그러나 FOR의 익숙하지 않은 독자가 산만 해지고 있습니다.

하나의 참조 만 필요로하는 산만 한 방법이 있습니까?

+0

"익숙하지 않은 독자"가 쉽게 이해할 수있는 코드 만 사용하려는 경우 - 어디에서 중단 하시겠습니까? 심지어 매개 변수를 가진'dir '조차도 "비 프로그래머"에게는 도전이 될 수 있습니다. 코드를 설명하기 위해'REM' – Stephan

+0

@Stephan을 사용할 수 있습니다. "어디에서 멈추시겠습니까?" dir 전에 : – ChrisJJ

+1

단지 errormessage를 supressing하는 방법 :'del/q myfile 2> nul'? – Stephan

답변

0

하나의 대체 가능하고 읽기 쉽고 실제 파일에 대한 참조가 하나뿐입니다.

set "file=c:\somewhere\file.txt" 
if exist "%file%" del "%file%" 

그리고 myfile을이 와일드 카드를 포함하지 않는

FOR %%F IN (myfile) DO del %%F 

아무것도 보장 할 수 없습니다 문제의 코드입니다. for 명령의 파일 검색 프로세스에서 두 개 이상의 파일이 있다고 판단하면 기존 파일 만 반복되지만 와일드 카드가 없으면 for 명령은 do 절의 코드를 실행하며이 경우 항상 파일을 삭제하려고하십시오.

+0

감사합니다. 참고 : 필자는 글로벌 '파일'사용을 고려할 때 솔루션이 원본보다 안전하도록 몇 줄이 더 필요하다고 생각합니다. "문제의 코드는 myfile에 와일드 카드가 포함되어 있지 않으면 아무 것도 보장하지 않습니다." 그것은 여기에서 일한다 : http://i.imgur.com/S4QIEyg.png. 나는 무엇을 놓쳤는가? – ChrisJJ

+0

@ChrisJJ 작성된대로이 코드는 원본 코드보다 안전합니다. 파일이있는 경우에만 삭제합니다. 나는 각 프로세스가 환경 변수의 복사본을 가지고 있기 때문에 여기서 "글로벌"용어를 실제로 이해하지 못한다. 코드에 대해 파일이 존재하지 않을 때 동일한 코드를 실행하려고 시도 했습니까? –

+0

"이 코드는 원본 코드보다"안전합니다 ". 파일이있는 경우에만 삭제합니다." 원래는 그렇습니까? "필자는 스크립트에서"전역 "용어 인"전역 범위 "를 실제로 이해하지 못합니다. "코드가 존재할 때 파일이 존재하지 않을 때 동일한 코드를 실행하려고 했습니까?" 물론 : http://i.imgur.com/HfoIrY7.png. 문제가 있습니까? – ChrisJJ

관련 문제