[windows] 배치가 있지만 폴더가없는 경우에만 폴더를 만듭니다.

아무도 Windows 배치 스크립트에서 다음을 수행하는 방법을 말해 줄 수 있습니까? ( *.bat) :

  • 폴더가없는 경우에만 폴더를 만듭니다.

더 자세하게 VTSC:\드라이브에 이름이 지정된 폴더를 만들고 싶지만 해당 폴더가없는 경우에만 해당합니다. 폴더가 이미 있고 배치가 실행되는 경우 폴더의 내용을 덮어 쓰고 싶지 않습니다.



답변

당신은 이것을 사용합니다 : if not exist "C:\VTS\" mkdir C:\VTS폴더가 존재하지 않는 경우에만 디렉토리를 생성합니다.

이 존재 테스트는 VTS가 존재하고 디렉토리 인 경우에만 true를 리턴합니다. 존재하지 않거나 파일로 존재하면 mkdir 명령이 실행되어 오류가 발생합니다. VTS가 파일로 존재하는지 확인하고 싶을 수도 있습니다.


답변

if exist C:\VTS\NUL echo "Folder already exists"

if not exist C:\VTS\NUL echo "Folder does not exist"

참조 https://support.microsoft.com/en-us/kb/65994

(2018 년 3 월 7 일 업데이트; Microsoft 기사가 다운되었습니다 ( https://web.archive.org/web/20150609092521/https://support.microsoft.com/en-us/kb/65994에 보관 )


답변

mkdir C:\VTS뭐든간에 전화하십시오 . 하위 디렉토리가 이미 존재한다고보고합니다.

편집 : 다른 사람들이 지적했듯이 폴더가 이미 존재하면 % ERRORLEVEL %을 설정합니다. 배치 (또는 호출하는 프로세스)가 오류 수준을 신경 쓰지 않으면이 방법이 효과적입니다. 질문은 오류 수준을 피하는 것에 대해 언급하지 않았 으므로이 대답은 완벽하게 유효합니다. 폴더가 존재하지 않으면 폴더를 만들 필요가 있으며 기존 폴더의 내용을 덮어 쓰지 않습니다. 그렇지 않으면 Martin Schapendonk의 답변을 따르십시오 .


답변

mkdir C:\VTS 2> NUL

이라는 폴더를 만들고에 VTS출력 A subdirectory or file TEST already exists합니다 NUL.

또는

(C:&(mkdir "C:\VTS" 2> NUL))&

드라이브 문자를 C:,, mkdir출력 오류로 변경하고 NUL다음 명령을 실행하십시오.


답변

set myDIR=LOG
IF not exist %myDIR% (mkdir %myDIR%)


답변

이 방법을 사용 하면 디렉토리 이름 끝에 백 슬래시를 넣어서 지정한 디렉토리와 이름이 같은 확장자가없는 파일에 파일이 존재하지 않도록해야합니다. “C : \ VTS” 는 파일을 사용할 수 있으므로 “C :” 파티션에 저장된 “VTS” 라는 이름으로 존재 하는 올바른 방법은 “C : \ VTS \” 를 사용 하고 VTS 뒤의 백 슬래시를 확인하는 것이므로 올바른 방법입니다.

@echo off
@break off
@title Create folder with batch but only if it doesn't already exist - D3F4ULT
@color 0a
@cls

setlocal EnableDelayedExpansion

if not exist "C:\VTS\" (
  mkdir "C:\VTS\"
  if "!errorlevel!" EQU "0" (
    echo Folder created successfully
  ) else (
    echo Error while creating folder
  )
) else (
  echo Folder already exists
)

pause
exit


답변

당신이 사용할 수있는:

if not exist "C:\VTS\" mkdir "C:\VTS"

누락 된 예상 파일을 대체하도록 코드를 확장 할 수도 있습니다.

if not exist "C:\VTS\important.file" echo. > "C:\VTS\important.file"