[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

批处理怎样判断一个非正常命名的文件夹是否为空?

例如:g:\1.txt 这个1.txt是一个文件夹名,该怎么判断它是否为空?

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

TOP

  1. @echo off
  2. if exist 2 (rd 2&&echo 目录为空&md 2) else echo 该目录不存在
  3. pause>nul
复制代码
加了点费话
1

评分人数

枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

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

TOP

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

回复 2# 601997526


    如果文件夹没有文件,那么赋值语句也是不会执行的。——搞错,原来不赋值,if语句也能执行(If "%i%"=="" echo h)。

TOP

  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楼的,一看到这题目我就想那么写。

TOP

回复 2# 601997526


你没有考虑到文件夹中只存在隐藏文件的情况吧

TOP

回复 3# wc726842270


你没有考虑到有个文件叫做2吧

TOP

  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
复制代码

TOP

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

TOP

回复 6# Hello123World


3楼这种先删后建有一个弊端,它会导致文件夹丢失原来可能存在的共享、安全等设置,因此不是一个好方案。
2

评分人数

TOP

检测有好几种,一是什么都没有,连空格都没有,二是只有空格,而没有其他字符,三是有字符。
  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%)
复制代码
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

回复 11# HAT


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

TOP

返回列表