找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 30493|回复: 12

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

[复制链接]
发表于 2011-10-7 16:02:05 | 显示全部楼层 |阅读模式
例如:g:\1.txt 这个1.txt是一个文件夹名,该怎么判断它是否为空?
发表于 2011-10-7 17:38:08 | 显示全部楼层
想不到什么好办法
  1. @echo off
  2. for /f %%i in ('dir /b g:\1.txt\*') do set i=%%i
  3. if "%i%"=="" echo 文件夹为空
  4. pause
复制代码
发表于 2011-10-7 17:41:21 | 显示全部楼层

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

评分

参与人数 1技术 +1 收起 理由
Hello123World + 1 乐于助人

查看全部评分

发表于 2011-10-7 17:56:48 | 显示全部楼层
本帖最后由 CrLf 于 2011-10-7 20:39 编辑
  1. if exist 1.txt\ echo 存在文件夹 1.txt
复制代码
发表于 2011-10-7 20:31:18 | 显示全部楼层
本帖最后由 Hello123World 于 2011-10-7 20:33 编辑

回复 2# 601997526


    如果文件夹没有文件,那么赋值语句也是不会执行的。——搞错,原来不赋值,if语句也能执行(If "%i%"=="" echo h)。
发表于 2011-10-7 20:37:42 | 显示全部楼层
  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楼的,一看到这题目我就想那么写。
发表于 2011-10-8 00:18:24 | 显示全部楼层
回复 2# 601997526


你没有考虑到文件夹中只存在隐藏文件的情况吧
发表于 2011-10-8 00:19:34 | 显示全部楼层
回复 3# wc726842270


你没有考虑到有个文件叫做2吧
发表于 2011-10-8 00:34:42 | 显示全部楼层
  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
复制代码
发表于 2011-10-8 00:52:46 | 显示全部楼层
  1. @echo off
  2. findstr . "文件夹\*.*">nul 2>nul&&echo 文件夹不是空的||(
  3.         echo 文件夹是空的、或是只有0字节的文件、或是文件夹不存在
  4. )
  5. pause

复制代码
发表于 2011-10-8 01:19:24 | 显示全部楼层
回复 6# Hello123World


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

评分

参与人数 2PB +3 技术 +1 收起 理由
Hello123World + 3 原来如此,这个没考虑到
wc726842270 + 1 多谢指出

查看全部评分

发表于 2011-10-8 01:34:17 | 显示全部楼层
检测有好几种,一是什么都没有,连空格都没有,二是只有空格,而没有其他字符,三是有字符。
  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%)
复制代码
发表于 2011-10-11 22:21:55 | 显示全部楼层
回复 11# HAT


    延伸一下,假如改用 move 或者 ren 呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 06:17 , Processed in 0.031387 second(s), 13 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表