Board logo

标题: [ 新手练习题 3 ] 批处理判断目录存在与否 [打印本页]

作者: wxcute    时间: 2009-5-30 21:08     标题: [ 新手练习题 3 ] 批处理判断目录存在与否

[ 新手练习题 3 ] 判断目录存在与否
判断 C:\ 盘是否存在 WINDOWS 目录。如果存在,则用资源管理器打开目录。
不存在则创建此目录并打开。

目的:掌握判断目录存在与否的方法,学会调用程序打开目录。

要求:方法不限。

评分:代码可读性 1 分;
   首个新方法 4 分,第二个 3 分,依次类推,最少 2 分;
   一人可多种方法,新方法追加 2 分,已经出现过的方法追加 1 分。
作者: yslyxqysl    时间: 2009-5-30 21:20

  1. Dir C:\ /a:d /b 2>nul|Findstr /i "^Windows$">nul||md C:\Windows&Explorer C:\Windows
复制代码
或者
  1. (If Not Exist C:\Windows\nul md C:\Windows)&Explorer C:\Windows
复制代码
最直接的
  1. md C:\Windows 2>nul&Explorer C:\Windows
复制代码


[ 本帖最后由 yslyxqysl 于 2009-5-30 21:27 编辑 ]
作者: stuqx    时间: 2009-6-3 10:13

  1. @echo off
  2. cd /d c:\windows
  3. if %errorlevel% equ 1 (md c:\windows)
  4. explorer c:\windows
复制代码
这样应该可以了吧
作者: flyzr    时间: 2009-6-5 13:24

  1. @echo off
  2. if exist c:\windows (
  3. explorer c:\windows
  4. ) else (
  5. md c:\windows)
  6. pause >nul
复制代码

[ 本帖最后由 flyzr 于 2009-6-5 13:27 编辑 ]
作者: keen    时间: 2009-6-5 17:11

  1. @echo off
  2. explorer.exe c:\windows||md c:\windows
复制代码

[ 本帖最后由 keen 于 2009-6-5 17:19 编辑 ]
作者: wangshuping42    时间: 2009-6-8 23:28

  1. @echo off
  2. if exist c:\windows (goto open) else (
  3. md c:\windows
  4.   )
  5. :open
  6. start c:\windows
  7. exit
复制代码

作者: rwxyxy    时间: 2009-6-10 13:35

  1. @echo off
  2. cd c:\windows 2>nul
  3. if errorlevel 1 ( del c:\windows 2>nul & md c:\windows )
  4. explorer c:\windows
  5. pause>nul
复制代码
这个如何?
作者: quake_wu    时间: 2009-6-12 10:30

  1. @echo off
  2. dir /ad /b c:\ |findstr "windows" &&explorer c:\windows ||md c:\windows
复制代码
请问一下为什么我这段代码直接在命令行下运行没有异常
放到bat里执行就会出现一点异常,异常就是如果存在windows 它还是会去执行 md c:\windows

[ 本帖最后由 quake_wu 于 2009-6-12 10:32 编辑 ]
作者: q625805390    时间: 2009-7-27 22:06

@echo off
if exist c:windows (start c:windows) else (md c:windows)
pause>nul
作者: lee    时间: 2009-8-3 00:36

  1. @echo off
  2. for %%i in ("c:\windows") do (
  3. if exist %%i (explorer %%i) else (
  4. md %%i&&explorer %%i
  5. ))
  6. pause
复制代码



谢谢LZ指导!!

[ 本帖最后由 lee 于 2009-8-4 14:11 编辑 ]
作者: nopr    时间: 2009-8-3 10:05

  1. @echo off
  2. set str=c:\windows
  3. if exist %str% (c:\windows\explorer.exe %str%) else md %str%&c:\windows\explorer.exe %str%
  4. pause
复制代码

[ 本帖最后由 nopr 于 2009-8-3 10:25 编辑 ]
作者: nopr    时间: 2009-8-6 16:55     标题: 简单点的

@echo off
cd \&md windows 2>nul&start windows
goto :eof
作者: hs4814    时间: 2009-8-9 21:01

  1. @echo off
  2. dir c:\windows>nul
  3. if  errorlevel 1 ( echo 此目录不存在将建立&md c:\windows\ &explorer c:\windows)   else  (echo 存在此目录&explorer c:\windows)  
  4. pause>nul
复制代码

请楼主检查

[ 本帖最后由 hs4814 于 2009-8-9 21:31 编辑 ]
作者: quake_wu    时间: 2009-8-11 15:17

原帖由 quake_wu 于 2009-6-12 10:30 发表
@echo off
dir /ad /b c:\ |findstr "windows" &&explorer c:\windows ||md c:\windows请问一下为什么我这段代码直接在命令行下运行没有异常
放到bat里执行就会出现一点异常,异常就是如果存在windows 它还是会去执 ...


感谢wxcute版主的指导
我重新调整了code
  1. dir /ad /b c:\ |findstr /IX "windows" &&start explorer c:\windows ||md c:\windows
复制代码

作者: wayaoqiang    时间: 2009-8-12 17:29

  1. @echo off
  2. set pat=c:\WINDOWS
  3. if exist %pat% (start %pat%) else (md %pat%&&start %pat%)
复制代码

[ 本帖最后由 wayaoqiang 于 2009-8-17 21:01 编辑 ]
作者: atsivsucks    时间: 2009-8-19 08:51

  1. @echo off
  2. if not exist c:\windows (
  3.         md c:\windows
  4. )
  5. explorer c:\windows
  6. pause
复制代码

[ 本帖最后由 atsivsucks 于 2009-8-19 08:56 编辑 ]
作者: msconfig    时间: 2009-8-21 16:02

@echo off
if exist C:\WINDOWS (goto a)
else (
md C:\WINDOWS)
:a
explorer C:\WINDOWS
pause>nul
有个问题不太明白。上面的代码中,如果存在C:\WINDOWS结果正确。若是不存在呢。新建一个后我没有写代码用explorer打开。却也执行打开了。想不明白。

[ 本帖最后由 msconfig 于 2009-8-21 16:15 编辑 ]
作者: lianfayong    时间: 2009-8-26 18:15

@echo off
if exist \windows\nul explorer \windows
md windows & start \windows
pause
作者: cs19860814    时间: 2009-8-27 08:17

@echo off dir c:\ WINDOWS>nul 2>nul if errorlevel neq 0 ( md C:\WINDOWS ) esle ( explorer C:\WINDOWS ) pause>nul
作者: DXSX    时间: 2009-9-17 08:58

这里面涉及到一个问题:
1、如果WINDOWS 是以一个文件的形式存在呢?
2、判断文件夹是否存在应该用  IF EXIST C:\WINDOWS\NUL
作者: dominater    时间: 2009-10-13 00:06

  1. @echo off
  2. if exist c:\Windows (
  3. echo 目录已存在,准备打开...) else (
  4. choice /c YN /m 目录不存在,现在创建?是选Y,否选N
  5. if errorlevel 2 goto end
  6. if errorlevel 1 goto Y
  7. :Y
  8. md c:\Windows
  9. )
  10. start c:\Windows
  11. :end
  12. pause
复制代码

作者: samble    时间: 2009-10-15 21:29

方法一代码:
  1. md c:\windows 2>NUL & explorer c:\windows
复制代码


方法二:
用 IF 语句判断
  1. if exist c:\windows\nul (explorer c:\windows) else (
  2. md c:\windows & explorer c:\windows)
复制代码

之所以用 explorer 而不用 start ,是因为我发现用 explorer 打开目录速度快点。

[ 本帖最后由 samble 于 2009-10-15 21:48 编辑 ]
作者: pumahxh    时间: 2009-11-10 18:59

还是新手,看起来我的方法很呆板。
  1. @echo off
  2. if exist c:\windows\nul (explorer c:\windows
  3.    ) else (md c:\windows & explorer c:\windows)
  4. pause>nul
复制代码

刚开始没有考虑windows可能为文件,后来看到大家提示,学习了。
楼上的方法一,很经典!

[ 本帖最后由 pumahxh 于 2009-11-10 19:10 编辑 ]
作者: zgq0301    时间: 2009-11-13 20:04

  1. @echo off
  2. cd c:\
  3. cd windows && explorer.exe c:\windows || md windows &&explorer.exe windows
  4. pause
复制代码

作者: jcy0307    时间: 2009-11-20 19:15     标题: 回复 1楼 的帖子

@echo off
if exist c:\windows start c:\windows
if not exist c:\windows md c:\windows && start c:\windows
pause
作者: ljjllj    时间: 2009-11-26 15:43

  1. @echo off
  2. if exist "C:\WINDOWS" (explorer C:\WINDOWS) else echo windows不存在
  3. pause>nul
复制代码

作者: summerflower    时间: 2009-11-27 23:18

  1. @echo off
  2. setlocal
  3. set pt=c:\windows
  4. if not exist %pt% md %pt%
  5. start %pt%
  6. endlocal
复制代码

作者: cy32cxb98    时间: 2009-11-28 04:53

  1. (if not exist c:\WINDOWS (md c:\WINDOWS&start /high explorer c:\WINDOWS))&&start /high explorer c:\WINDOWS
复制代码

作者: x576380361    时间: 2009-12-5 21:39

判断 C:\ 盘是否存在 WINDOWS 目录。如果存在,则用资源管理器打开目录。
不存在则创建此目录并打开。
  1. if exist c:\windows (explorer c:\windows) else (
  2. md c:windows
  3. explorer c:\windows)
复制代码

作者: bjjgq    时间: 2009-12-7 20:20

我的代码:
@echo off
for /f %%i in ('dir /b/ad c:\') do (
        echo %%i | find /i "windows">nul && start c:\windows )
作者: wgoxm521    时间: 2009-12-10 19:28     标题: 代码

@echo off
if exist c:\windows (explorer c:\windows) else (md c:\windows && explorer c:\windows)
pause
作者: wsjxwj    时间: 2009-12-11 14:35

@echo
if not exist %windir%  md c:\windows &&explorer c:\windows
explorer c:\windows
作者: Fyk    时间: 2009-12-12 18:25

@echo off
if exist c:\windows (goto 0) else (goto 1)
:0
explorer c:\windows
:1
md c:\windows
pause > nul
作者: lvyaojian    时间: 2009-12-13 21:31

  1. @echo off
  2. if exist c:\windows (explorer c:\windows) else md c:\windows
  3. pause
复制代码

作者: sxw    时间: 2009-12-13 22:15

@echo off
cd\
dir c:|find /i "windows"&&start c:\windows||echo 没有找到windows!
pause
作者: common    时间: 2010-5-30 23:00

@echo off
if exist c:\windows (echo 文件夹成在) else md c:\windows
explorer c:\windows
pause
作者: gxuan2008    时间: 2010-7-3 15:09

  1. @echo off
  2. cd /d c:\windows && explorer c:\windows || md c:\windows && explorer c:\windows
  3. pause<nul
复制代码
有个问题:怎么把那个黑乎乎的CMD窗口关掉?
-----------------------------------------------------------------------------------------------------
再改一下,虽然差不多。
  1. @echo off
  2. cd /d c:\windows || md c:\windows
  3. explorer c:\windows
  4. pause<nul
复制代码

[ 本帖最后由 gxuan2008 于 2010-7-3 15:14 编辑 ]
作者: poxi    时间: 2010-7-18 20:06

答:
  1. @echo off
  2. if exist c:\windows (
  3. echo 存在windows目录,将为您打开...
  4. ) else (
  5. echo 不存在windows目录,为您创建后将打开...
  6. md  c:\windows
  7. )
  8. explorer c:\windows
  9. pause
复制代码
效果:

==============
end;
作者: solid    时间: 2010-7-27 22:42

@echo off
if exist c:\windows start c:\windows
作者: solid    时间: 2010-7-27 22:45

@echo off
if exist c:\windows start c:\windows
md c:\windows
start c:\windows
::上面忘记在没有时创建windows文件夹了。
作者: paladinjin    时间: 2010-8-26 11:33

  1. @echo off
  2. if exist c:\windows explorer c:\windows || md c:\windows && explorer c:\windows
  3. pause>nul
复制代码

作者: imin    时间: 2010-9-12 03:33

cd\
c:
dir /ad-h| find "WINDOWS"
if %errorlevel%==0 explorer windows
if %errorlevel%==1 md WINDOWS
exit

[ 本帖最后由 imin 于 2010-9-12 03:40 编辑 ]
作者: backup    时间: 2010-9-12 15:33

@echo off
if  /i exist c:\windows (start c:\windows) else (md c:\windows && start c:\windows)
作者: lvsehuaxue    时间: 2010-9-16 21:45     标题: 启发

看了各位的帖子之后,真是感觉“条条大道通罗马!”尽管繁简不一。
作者: meihaodehuiyi    时间: 2010-10-12 14:46

@echo off
if exist c:\windows\ (explorer c:\windows) else (md c:\windows && explorer c:\windows)
pause
作者: cjiabing    时间: 2010-11-11 10:55

最直接实用的:
  1. if exist %SYSTEMROOT% (explorer  %SYSTEMROOT%) else (md %SYSTEMROOT%)
复制代码

通用目录判断(三层条件判断):
  1. if exist   "%SYSTEMROOT%\."  dir /a:d "%SYSTEMROOT%">nul 2>nul&&echo 文件夹存在
复制代码

作者: pengyimin1988    时间: 2010-12-8 17:50     标题: 来个拐弯抹角多此一举的但是正确的请楼主鉴定

来个拐弯抹角多此一举的
嘿嘿嘿
@echo off

dir /ad /b c:\>tmp.txt
findstr /ix "windows" "tmp.txt"
if %errorlevel% gtr 0 (
        echo no c:\windows
        md c:\windows
)
explorer c:\windows

[ 本帖最后由 pengyimin1988 于 2010-12-8 17:51 编辑 ]
作者: keyll    时间: 2010-12-11 06:49     标题: 批处理判断目录存在与否

@echo off
cd\ & c: & dir | find "WINDOWS" & cd WINDOWS & md C:\WINDOWS & dir c:\windows
pause
作者: keyll    时间: 2010-12-11 06:55     标题: 批处理判断目录存在与否

@echo off
cd\ & c: & cd WINDOWS || md C:\WINDOWS & dir c:\windows
pause
作者: skuny    时间: 2010-12-26 14:23

  1. @echo off
  2. md d:\windows 2>nul
  3. start d:\windows
复制代码

作者: wangqi0077    时间: 2011-5-29 09:24

  1. @echo off
  2. if exist F:\bat\test\abc (F:\bat\test\abc) else (md F:\bat\test\abc&explorer F:\bat\test\abc)
  3. pause
复制代码
没用WINDOWS.怕系统搞出问题...抱歉.随便用个目录没问题吧?
作者: wangqi0077    时间: 2011-5-29 09:25

  1. @echo off
  2. if exist F:\bat\test\abc (F:\bat\test\abc) else (md F:\bat\test\abc&explorer F:\bat\test\abc)
  3. pause
复制代码
没用WINDOWS.怕系统搞出问题...抱歉.随便用个目录没问题吧?
作者: common    时间: 2011-6-7 23:07

  1. echo off
  2. if exist c:\windows (explorer c:\windows) else (md c:\windows)
  3. pause
复制代码

作者: Hello123World    时间: 2011-7-19 17:19

本帖最后由 Hello123World 于 2011-7-19 17:20 编辑
  1. @echo off
  2. If Exist %windir% (start %windir%) Else md %windir% & start %windir%
  3. pause
复制代码

作者: scarcr    时间: 2011-8-4 18:58

回复 1# wxcute
  1. @echo off
  2. cd /d c:\windows
  3. if errorlevel 1 (md c:\windows&goto b)
  4. if errorlevel 0 (goto b)
  5. :b
  6. explorer c:\WINDOWS\@echo off
复制代码

作者: zijian521500    时间: 2011-8-8 11:26

if exist c:\WINDOWS explorer c:\WINDOWS
else md c:\WINDOWS
作者: wrove    时间: 2011-8-8 15:54

:CheckDir
Set DirPath=%~1
If exist %DirPath% (Explorer %DirPath%) Else (Md %DirPath%&&Explorer %DirPath%)
Goto :Eof
作者: xslxslxsl    时间: 2011-8-16 16:42

@echo off
cd /d c:\windows
if %errorlevel% equ 1 (md c:\windows)
explorer c:\windows
作者: zaixinxiangnian    时间: 2011-8-16 19:51

  1. @echo off
  2. if exist d:\windows (goto a) else md d:\windows
  3. :a
  4. start explorer d:\windows
  5. pause>nul
复制代码

作者: brim    时间: 2011-9-18 09:51

  1. @echo off
  2. :aa
  3. set/p aa=请输入完整路径:
  4. if exist "%aa%" (echo 文件/活页夹存在) else echo 文件/活页夹不存在
  5. goto aa
复制代码

作者: Batcher    时间: 2011-9-18 10:03

回复 63# brim


题目要求是判断目录是否存在,你这个代码无法区分文件和目录。
作者: brim    时间: 2011-9-18 22:57

本帖最后由 brim 于 2011-9-18 23:20 编辑

回复 64# Batcher
  1. @echo off
  2. :aa
  3. set/p aa=请输入完整路径:
  4. set aa="%aa%"
  5. if exist %aa% (
  6.               2>nul pushd %aa%&&echo 您的输入%aa%是存在的且是个文件夾||echo 您的输入%aa%是存在的且是个文件
  7.        ) else (
  8.          echo 您的输入%aa%不存在
  9.        )
  10. popd
  11. goto aa
复制代码
1>nul 执行正确信息不显示出来。
2>nul 执行错误信息不显示出来。
&&该符号之前的语句执行成功,将执行它之后的语句
||该符号之前的语句执行失败,将执行它之后的语句
作者: brim    时间: 2011-9-19 00:08

  1. @echo off
  2. :aa
  3. set/p aa=请输入完整路径:
  4. set bb=%aa:"=%
  5. set aa="%bb%"
  6. if exist %aa% (
  7.               2>nul pushd %aa%&&echo 您的输入%bb%是存在的而且是个文件夾||echo 您的输入%bb%是存在的而且是个文件
  8.        ) else (
  9.          echo 您的输入%bb%不存在
  10.        )
  11. popd
  12. goto aa
复制代码
修改了一下,去掉了引号的显示。支持直接拖拽
作者: Batcher    时间: 2011-9-19 20:32

回复 66# brim


if exist %aa%\
这样可以判断文件夹
作者: mcah1975    时间: 2011-11-18 11:03

@echo off
if exist c:\windows (start c:\windows) else echo c:\windows不存在
pause
作者: wangxiaodong    时间: 2012-2-24 19:52

回复 3# stuqx


   大哥if %errorlevel% equ 是什么意思?先谢谢了!
作者: cjiabing    时间: 2012-2-24 20:16

回复 68# mcah1975


    失败,请重试!提醒,是判断文件夹,不是判断存在!~
作者: cjiabing    时间: 2012-2-24 20:17

回复 69# wangxiaodong


    “返回码”,自己搜索论坛~
作者: wangxiaodong    时间: 2012-2-25 13:39

回复 71# cjiabing


    谢谢版主!
作者: lokivalentine    时间: 2012-6-9 11:36

  1. @echo off
  2. @if NOT exist %windir% (md windows&call explorer %windir%)
  3. @if exist %windir% (call explorer %windir%)
  4. @echo 已经完成
  5. pause>nul
复制代码

作者: yaboo    时间: 2012-7-12 21:14

回复 1# wxcute


    if exist "c:\windows" goto aaa
    if not exist "c:\windows"  goto bbb
    :aaa
    explorer.exe c:\windows
    :bbb
     md c:\windows & exeplorer.exe c:\windows

这个命令完全符合出题老师的要求

explorer.exe c:\windows || md c:\windows & explorer.exe c:\windows

这条命令也应该符合出题老师的要求

md c:\windows
exeplorer.exe c:\windows

这条命令可以符合出题老师要求达到的结果
作者: 路过    时间: 2012-10-20 16:00

start c:\WINDOWS||md c:\WINDOWS
作者: Clarkky    时间: 2013-1-27 23:14

  1. @echo off
  2. if exist c:\windows (
  3. if exist c:\windows\nul.ext (
  4. explorer.exe c:\windows
  5. goto :eof
  6. ))
  7. if exist c:\windows ren c:\windows windows_bak
  8. md c:\windows
  9. explorer.exe c:\windows
复制代码

作者: battab    时间: 2014-2-19 17:50

本帖最后由 battab 于 2014-2-19 17:52 编辑

回复 1# wxcute
  1. @echo off
  2. if exist c:\windows (start c:\windows) else (md c:\windows&start c:\windows)
  3. pause
复制代码

作者: techon    时间: 2014-9-11 01:08

顺便出一个问题,如何用 if exist 判断 “D:\Program Files” 是文件还是目录?。。。

当路径中不含有空格时,用 if exist 路径 if exist 路径\nul (echo “路径”是目录) else “路径”是文件
作者: ann    时间: 2014-12-20 14:56

试试
  1. @echo off
  2. if not exist F:\windows\ (md F:\windows\&start F:\windows\) else
  3. (explorer F:\windows\)[color=LemonChiffon][/color]
复制代码

作者: zzw8822    时间: 2015-4-23 09:35

  1. @echo off
  2. cd /d c:\windows
  3. if exist c:\windows explorer c:\windows
  4. if not exist c:\window  md c:\windows
复制代码

作者: gawk    时间: 2015-4-23 16:11

回复 80# zzw8822


两个建议

1. 在不确定 c:\windows 是否存在的情况下就直接 cd /d 没啥意义
2. 两个 if 命令可以合并成一个 if ... else ...
  1. if exist c:\windows\ (
  2.     explorer c:\windows
  3. ) else (
  4.     md c:\windows
  5. )
复制代码

作者: dizimotong    时间: 2015-5-5 12:43

方法一
  1. if exist c:\windows\ (
  2. echo c:\windows存在
  3. start c:\windows\ ) else (
  4. echo c:\windows\不存在
  5. echo 开始创建c:\windows\
  6. md c:\windows\
  7. start c:\windows\ )
  8. pause>nul
复制代码
方法二
  1. cd /d d:\windows&&echo 目录存在||md d:\windows
  2. explorer d:\windows
  3. pause>nul
复制代码

作者: clsgalmc    时间: 2015-5-8 23:33

@echo off
set str=c:\windows  
if exist %str% (start explorer.exe) else (cd /d c:\&md windows)
pause
作者: wutarnow    时间: 2015-10-20 15:38

本帖最后由 wutarnow 于 2015-10-20 15:46 编辑
  1. @echo off
  2. md c:\windows 2>nul & start c:\windows\
复制代码

作者: sishentibu    时间: 2016-3-31 21:51

  1. @echo off
  2. set diretory=c:\windows
  3. if exist %diretory% (explorer %diretory%) else (md %diretory%&explorer %diretory%)
复制代码

作者: 胖奇4BAT    时间: 2016-4-22 15:36

@echo off
if exist D:\Windows (
   explorer D:\Windows
) else (
    md D:\Windows
)
pause
作者: zhuzhen830201    时间: 2016-11-8 21:36

@echo off
if exist c:\windows explorer c:\windows else md c:\windows
作者: 懒虫阿布    时间: 2018-7-29 13:14

  1. @echo off
  2. set specfolder=%1
  3. if not exist "%specfolder%" (
  4. md "%specfolder%"
  5. )
  6. start "%specfolder%" "%specfolder%"
复制代码

作者: impk    时间: 2019-7-28 17:46

判断 C:\ 盘是否存在 WINDOWS 目录。如果存在,则用资源管理器打开目录。
不存在则创建此目录并打开。
  1. @echo off
  2. set path="C:\windows"
  3. if exist %path% explorer %path%
  4. if not exist %path% md %path%
  5. start explorer %path%
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2