Board logo

标题: 批处理怎样判断一个非正常命名的文件夹是否为空? [打印本页]

作者: stu_p    时间: 2011-10-7 16:02     标题: 批处理怎样判断一个非正常命名的文件夹是否为空?

例如:g:\1.txt 这个1.txt是一个文件夹名,该怎么判断它是否为空?
作者: 601997526    时间: 2011-10-7 17:38

想不到什么好办法
  1. @echo off
  2. for /f %%i in ('dir /b g:\1.txt\*') do set i=%%i
  3. if "%i%"=="" echo 文件夹为空
  4. pause
复制代码

作者: wc726842270    时间: 2011-10-7 17:41

  1. @echo off
  2. if exist 2 (rd 2&&echo 目录为空&md 2) else echo 该目录不存在
  3. pause>nul
复制代码
加了点费话
作者: CrLf    时间: 2011-10-7 17:56

本帖最后由 CrLf 于 2011-10-7 20:39 编辑
  1. if exist 1.txt\ echo 存在文件夹 1.txt
复制代码

作者: Hello123World    时间: 2011-10-7 20:31

本帖最后由 Hello123World 于 2011-10-7 20:33 编辑

回复 2# 601997526


    如果文件夹没有文件,那么赋值语句也是不会执行的。——搞错,原来不赋值,if语句也能执行(If "%i%"=="" echo h)。
作者: Hello123World    时间: 2011-10-7 20:37

  1. @echo off
  2. for /f %%i in ('dir /a /b g:\1.txt\*') do set i=%%i
  3. if "%i%"=="" echo 文件夹为空
  4. pause
复制代码
也检测隐藏文件、文件夹;我喜欢3楼的,一看到这题目我就想那么写。
作者: HAT    时间: 2011-10-8 00:18

回复 2# 601997526


你没有考虑到文件夹中只存在隐藏文件的情况吧
作者: HAT    时间: 2011-10-8 00:19

回复 3# wc726842270


你没有考虑到有个文件叫做2吧
作者: awk    时间: 2011-10-8 00:34

  1. @echo off
  2. set MyFolder=C:\test\123.txt
  3. if exist "%MyFolder%\" (
  4.     dir /a /b "%MyFolder%" | findstr .*>nul && echo %MyFolder%不是空文件夹 || echo %MyFolder%是空文件夹
  5. ) else (
  6.     echo 不存在文件夹%MyFolder%
  7. )
  8. pause
复制代码

作者: FOR    时间: 2011-10-8 00:52

  1. @echo off
  2. findstr . "文件夹\*.*">nul 2>nul&&echo 文件夹不是空的||(
  3. echo 文件夹是空的、或是只有0字节的文件、或是文件夹不存在
  4. )
  5. pause
复制代码

作者: HAT    时间: 2011-10-8 01:19

回复 6# Hello123World


3楼这种先删后建有一个弊端,它会导致文件夹丢失原来可能存在的共享、安全等设置,因此不是一个好方案。
作者: cjiabing    时间: 2011-10-8 01:34

检测有好几种,一是什么都没有,连空格都没有,二是只有空格,而没有其他字符,三是有字符。
  1. @echo off
  2. set bpl_kong=
  3. for /f "tokens=*" %%i in (C:\BatMPlayer\PlayLists.txt) do if /i "%%i"=="" (
  4.     echo 播放列表为空!
  5.     set bpl_kong=%%i
  6. ) else (
  7.     echo 播放列表no空!
  8.     set bpl_kong=%%i
  9. )
  10. if defined bpl_kong echo 播放列表不是空的!
  11. pause
  12. set var_kong=
  13. for /f "tokens=*" %%i in (C:\BatMPlayer\PlayLists.txt) do if /i "%%i"=="" (
  14.     echo 播放列表为空!
  15.     ping /n 3 127.0.1>nul>nul
  16. ) else (
  17.     set var_kong=%%i
  18. )
  19. if defined var_kong echo 播放列表不是空的!
  20. pause
  21. @echo off
  22. ::检测文件是否为空的新方法,利用for自动检测。
  23. for /f "usebackq tokens=*" %%a in (1.txt) do (
  24.     echo;[%%a]
  25.     if "%%a"=="" (echo;&echo 当你看见我,文件为空,但有空格!&echo;&pause&goto :eof)
  26. )&&set d=当你看见我,我是存在数据的!
  27. if "%d%"=="" (echo 当你看见我,文件里一无所有,甚至连空格都没有) else (echo %d%)
  28. pause
  29. for /f "usebackq tokens=*" %%a in (2.txt) do set d=not nul
  30. if "%d%"=="" (echo nul) else (echo %d%)
复制代码

作者: CrLf    时间: 2011-10-11 22:21

回复 11# HAT


    延伸一下,假如改用 move 或者 ren 呢?




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