답변:
당신은 이것을 사용합니다 : if not exist "C:\VTS\" mkdir C:\VTS
폴더가 존재하지 않는 경우에만 디렉토리를 생성합니다.
이 존재 테스트는 VTS가 존재하고 디렉토리 인 경우에만 true를 리턴합니다. 존재하지 않거나 파일로 존재하면 mkdir 명령이 실행되어 오류가 발생합니다. VTS가 파일로 존재하는지 확인하고 싶을 수도 있습니다.
NUL
이것도 테스트에 문제가 있다고 생각합니다 .
if exist "a" if not exist "a\" (echo "it's a file") else (echo "it's a dir")
합니다. 마지막 문장에 대해서는 다른 곳의 배치 파일에 문제가 있다고 생각합니다.
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에 보관 )
NUL
하나 L. 함께
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
다음 명령을 실행하십시오.
NUL
출력 파일 로 지원하지 않는 것 같습니다 .
이 방법을 사용 하면 디렉토리 이름 끝에 백 슬래시를 넣어서 지정한 디렉토리와 이름이 같은 확장자가없는 파일에 파일이 존재하지 않도록해야합니다. "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
!errorlevel!
지연된 확장 을 사용한다는 것 입니다. 그렇지 않으면 변수 ERRORLEVEL
는 첫 번째 변수 를 입력하기 전에 if
(즉, 구문 분석 시간에) 구문 분석됩니다. 이제 실행 시간에 구문 분석되므로의 결과를 캡처 할 수 있습니다 mkdir
. 존재 여부를 테스트하더라도 성공을 테스트해야합니다 (예 : 액세스 거부 오류 등). 다른 것에 비해 매우 좋은 솔루션, +10 !!!
당신이 사용할 수있는:
if not exist "C:\VTS\" mkdir "C:\VTS"
누락 된 예상 파일을 대체하도록 코드를 확장 할 수도 있습니다.
if not exist "C:\VTS\important.file" echo. > "C:\VTS\important.file"
나는 eyebeam 작업에서 사용하는 스크립트를 위해 이것을 만들었습니다.
:CREATES A CHECK VARIABLE
set lookup=0
:CHECKS IF THE FOLDER ALREADY EXIST"
IF EXIST "%UserProfile%\AppData\Local\CounterPath\RegNow Enhanced\default_user\" (set lookup=1)
:IF CHECK is still 0 which means does not exist. It creates the folder
IF %lookup%==0 START "" mkdir "%UserProfile%\AppData\Local\CounterPath\RegNow Enhanced\default_user\"
if not exist "%Folder%" mkdir "%New-Folder%"