.bat 파일을 사용하여 폴더가 있는지 확인 [닫힘]


164

특정 폴더 (FolderA)가 존재하는지 확인하고 있다면 메시지가 표시되고 배치 파일이 종료되는지 확인하고 싶습니다.

FolderA가 없으면 다른 폴더 (FolderB)가 있는지 확인하고 싶습니다. FolderB가 없으면 메시지가 표시되고 폴더가 생성되어야하며 FolderB가 존재하면 메시지가 표시되어야합니다.

누구든지 메모장에서 간단히 사용할 수있는 코드에 대해 알고있는 사람이 있습니까?

이 모든 작업은 하나의 .bat파일 에서 수행되어야 합니다.


7
Google 검색은 드라이브 또는 디렉토리가 존재하는지 테스트합니다 . 그리고 이것은 ... 당신이 무엇을 요구하는 방법을 정확히 설명
NealB

2
여기에서 "배치 파일 디렉토리가 존재 함"을 검색하면 Windows 배치 파일이 존재하지 않는 경우 디렉토리를 찾아 파일을 이동합니다 . 디렉토리가 있는지 여부를 확인하는 방법을 보여줍니다. 여기에는 배치 파일에서 디렉토리를 만드는 방법에 대한 게시물도 있습니다. 새로운 질문을 게시하기 전에 몇 가지 기본적인 조사를 수행하십시오. 이전에 여기에서 질문 한 적이있을 가능성이 높습니다. 감사.
Ken White

3
Windows 배치는 프로그래밍 언어입니다. 파일이 있는지 확인하는 것은 프로그래밍 작업입니다. 주제에 나타납니다.
Audrius Meskauskas

답변:


267

이것을 사용해보십시오 :

IF EXIST yourfilename (
echo Yes 
) ELSE (
echo No
)

yourfilename 을 파일 이름으로 바꿉니다 .

디렉토리는 https://jeffpar.github.io/kbarchive/kb/065/Q65994/를 참조하십시오.

C:
IF NOT EXIST C:\WIN\ GOTO NOWINDIR
CD \WIN
:NOWINDIR

후행 백 슬래시 ( '\')는 디렉토리와 일반 파일을 구별하기에 충분합니다.


2
답변의 두 번째 부분은 불완전합니다.
tmj

4
if exist "c:\folder\nul" echo okWindows 7에서는 작동하지 않았습니다 if exist "c:\folder\" echo ok.
Alexander Gelbukh

2
@AlexanderGelbukh-맞습니다 if exist "networkPath\nul". Windows 네트워크 드라이브에서 파일을 폴더로 잘못보고 할 수 있습니다. 불행히도 if exist "networkPath\"같은 문제가 있습니다. 모든 테스트에서 신뢰할 수있는 기술을 보려면 stackoverflow.com/a/8669636/1012053 에서 2015-12-08 업데이트를 참조하십시오 .
dbenham 2015

@AlexanderGelbukh 따옴표없이 작동합니다. 물론 이것은 디렉토리 경로에 공백이있을 때 제한됩니다.
Marc.2377

1
예, 따옴표없이 작동합니다. 그러나 금리는 로컬 드라이브에 대해서도 작동하지 않습니다 if exist c:\Windows\nul echo ok라고 ok하지만, if exist "c:\Windows\nul" echo ok아무것도 말하지 않는다. 내가 말했듯이, if exist "c:\Program Files\nul" echo ok아무 말도하지 않지만 공간이있는 경로에서도 if exist "c:\Program Files\" echo ok말하고 ok작동합니다.
Alexander Gelbukh

36

대답은 여기에 있다고 생각합니다 (중복 가능성이 있음).

파일이 배치 스크립트의 디렉토리인지 테스트하는 방법은 무엇입니까?

IF EXIST %VAR%\NUL ECHO It's a directory

% VAR %를 디렉토리로 바꿉니다. 폴더 이름의 공백 처리에 대한 세부 정보가 포함되어 있으므로 원래 답변을 읽으십시오.

foxidrive가 말했듯이 이것은 NT 클래스 창에서 신뢰할 수 없을 수도 있습니다. 그것은 나를 위해 작동하지만 몇 가지 제한 사항이 있음을 알고 있습니다 (참조 된 질문에서 찾을 수 있음).

if exist "c:\folder\" echo folder exists 

현대 창문에 충분해야합니다.


6
\ nul 기술은 NT 클래스 창에서 신뢰할 수 없습니다. 그러나 MSDOS와 Win9x에서는 괜찮 았습니다. 최신 Windows의 솔루션은 간단합니다 if exist "c\:folder\" echo folder exists
foxidrive 2014 년

1
참조 링크에도 명시되어 있다고 생각합니다.
Cosmin Vană 2014 년

여전히 내가 비추천을받은 이유를 이해하지 못합니다 ( "유용하지 않음"을 의미). 답변이 필요한 시나리오를 다루는 질문에 대한 참조를 추가했습니다.
Cosmin Vană 2014 년

유용하지 않은 것은 현재 컴퓨터에 적용 할 수 없으며 이전 답변으로 구별되지 않았기 때문일 수 있습니다. 제기 된 질문에 대한 답변이 아니기 때문에 일부 사람들은 여전히 ​​귀하의 답변을 반대 할 것입니다.
foxidrive 2014 년

2
에서 support.microsoft.com/kb/65994 "NUL 항상 로컬 MS-DOS FAT 드라이브에있는"- 같이E:\NUL
놈 CAD
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.