답변:
@echo off
IF exist myDirName ( echo myDirName exists ) ELSE ( mkdir myDirName && echo myDirName created)
추가 한 Barlop
위의 상황이 이러한 특정 상황에서 작동하지만 제목은 디렉토리에 대한 테스트에 관한 것입니다. Phogg의 의견이 if exist mydirname\
아닌 사용 if exist mydirname
방법입니다. 일부 대답은 \ nul을 사용했지만 \ nul은 NT에서 문제가 있습니다. 후행 백 슬래시를 포함하지 않으면 파일 또는 디렉토리를 테스트합니다. 따라서 디렉토리의 경우 후행 백 슬래시를 포함하십시오.
if exist mydirname\
나머지 말입니다. 또는 실제로 test
바이너리를 얻어 Windows에서 사용할 수도 있습니다.
mkdir
.
if not 1==1 echo hmm
또는 myDirName \의 ELSE의 blahblahblah있는 경우
내가 방금 알아 낸 것은 다음과 같습니다.
널 파일이 존재하는지 테스트 할 수 있습니다. 디렉토리가 존재하면 nul 파일을 포함하고, nul 파일이 존재하지 않으면 디렉토리가 존재하지 않습니다.
IF exist myDirName/nul ( echo myDirName exists ) ELSE ( mkdir myDirName && echo myDirName created)
if exist dirname
Windows NT에만 해당되는 일반과 달리 모든 Windows 및 MS-DOS 버전에서 작동합니다 .
\nul
, 그것은 일반은 더 이상 윈도우 NT에서 필요하지 않습니다 if exist "C:\Program Files (x86)"
작동합니다 (당신은 여전히 윈도우 98 ... 표적으로하지 않는 한)
백 슬래시를 사용하지 슬래시 : myDirName\nul
하지myDirName/nul
md foo
echo.>bar
for %I in (foo bar xyz) do @(
if exist %I (
if exist %I\nul (
echo -- %I is a directory
) else (
echo -- %I is a file
)
) else (
echo -- %I does not exist
)
)
-foo는 디렉토리입니다
-bar는
파일입니다
-xyz는 존재하지 않습니다
편집 : 디렉토리 이름에 공백이없는 경우에만 작동합니다
일부는 \ nul을 제안했지만 NT에서 안정적으로 작동하지 않는 것 같습니다.
C:\blah>md abc
C:\blah>if exist abc\nul echo yes
yes
C:\blah>if exist "abc\nul" echo yes
C:\blah>
http://www.dostips.com/forum/viewtopic.php?f=3&t=4913
foxidrive writes-
The trick with nul worked in pre NT versions of windows.
Now you would use this, with a trailing backslash.
if exist "C:\abcde\" echo the folder exists
질문을 다시
C:\blah>if exist "abcd\" (echo yes) else (echo no && mkdir abcd)
no
C:\blah>if exist "abcd\" (echo yes) else (echo no && mkdir abcd)
yes
C:\blah>
Windows 7에서 같은 종류의 문제가 발생하여 joe가 downvote를 갖는 이유가 궁금했습니다.
존재하는 경우 filename \ NUL
파일과 디렉토리 모두에 대해 TRUE를 반환했습니다. www.robvanderwoude.com/battech_ifexistfolder.php 에서 대안 솔루션을 찾았 으며 DVF의 FOR 루프 개정판 을 찾았 습니다.
FOR %I in (foo bar xyz) DO @( PUSHD %I && (POPD & echo -- %I is a directory) || ( IF exist %I ( echo -- %I is a file ) ELSE ( echo -- %I does not exist ) ) )
많은 사람들이 파일과 폴더를 구별하는 데 문제가 있음을 알았습니다. 누군가가 존재하는지 확인한 후 간단히 CD를 넣으려고 했습니까? 그러면 cd는 성공하거나 실패합니다.
set MyDir = "MyTestDir"
IF exist MyDir (
cd MyDir
IF ERRORLEVEL NEQ 0 (
echo "Error: %MyDir% already exists, but it is a file!"
exit 1
) else (
# Do not forget to cd back
cd ..
)
) else (
# Did not exist yet, so create it.
mkdir MyDir
)
MyDir
첫 번째 줄 이후의 모든 항목은 이어야합니다 %MyDir%
. (2) 다중 레벨 경로 이름 (예 :) 또는 절대 경로 이름 (예 :) 인 cd ..
경우 원하는 것을 수행하지 않습니다 . / 및 / 또는 사용을 고려하십시오 . %MyDir%
Pictures\cats
\Windows
pushd
popd
setlocal
폴더를 찾는 것이 어렵지 않아야합니다. 내 솔루션은 perl을 사용하십시오.
for ($ cnt = $ # ARGV; $ cnt> = 0;-$ cnt) { if (-d "$ ARGV [$ cnt]") { print "argv [$ cnt] = $ ARGV [$ cnt]는 폴더 \ n"; $ dir = $ ARGV [$ cnt]; 단절; } else { print "argv [$ cnt] = $ ARGV [$ cnt]는 폴더가 아닙니다 \ n"; } }
mkdir -p myDirName
. 비교적 간단한 bash 스크립트를 batch-sh * t로 변환하는 데 며칠을 보낸 후 (함수의 결과를 변수에 할당 하시겠습니까?) 사람들이 cygwin을 설치하도록 결정했습니다.