2016-06-09 1 views
2

xcopy이 파일을 찾지 못하면 변수가 0에서 다른 것으로 변경됩니다. 저희 회사에서는 xcopy을 사용하여 파일을 복사하는 큰 스크립트를 가지고 있으며 errorLevel을 기반으로 작업을 수행합니다.xcopy - 패턴과 일치하는 하나 이상의 파일 복사

특정 파일이나 디렉토리에 대해서는 정상적으로 작동합니다.

작품 절대적 벌금 :

xcopy file dir 
if %errorlevel% neq 0 exit -1 

그러나, 대신 파일의 정확한 이름을 지정 그때 errorLevel 것 더 이상 작동을 확인하는 *을 사용하고 싶습니다.

가 작동하지 않습니다 :

xcopy file* dir 
if %errorlevel% neq 0 exit -1 

내가 얻을 것이다 : 발견

파일이 아닌 - 파일 *

0 파일 (들)

복사

하지만 errorLevel은입니다..

와일드 카드를 사용할 때 적어도 하나의 파일이 복사되도록하려면 어떻게해야합니까?

답변

2

와일드 카드를 사용하는 경우 xcopy 명령은 일치하는 파일을 오류로 간주하지 않습니다. 로

작업 주위에, 당신이 0ErrorLevel을 설정하는 경우에는 적어도 하나 개의 일치하는 항목이 있지만, 1에 그렇지 않으면이 있는지 확인하는 where 명령을 사용할 수 있습니다. 스위치 /Q를 추가하면 아무것도 출력에서 ​​where을 방지하고 단지 ErrorLevel를 반환 할 수 있습니다 : xcopywhereErrorLevel을 덮어 쓰기 때문에 당신은 ErrorLevel의 단일 검사를 할 수없는

where /Q "file*" 
if %errorlevel% neq 0 exit -1 
xcopy "file*" "dir" 
if %errorlevel% neq 0 exit -1 

. 그러나 위의이 같은 단축 할 수 있습니다

where /Q "file*" || exit -1 
xcopy "file*" "dir" || exit -1 

심지어 같은 : 내가 여기에 인용 부호 사이에있는 모든 파일 및 디렉토리 사양을 넣어 가지고

where /Q "file*" && xcopy "file*" "dir" || exit -1 

을, 이것이 있기 때문에 그 중 하나에 공백이 포함될 경우에만 보안 방법을 사용하십시오.

관련 문제