标题: 批处理怎样判断一个非正常命名的文件夹是否为空? [打印本页]
作者: stu_p 时间: 2011-10-7 16:02 标题: 批处理怎样判断一个非正常命名的文件夹是否为空?
例如:g:\1.txt 这个1.txt是一个文件夹名,该怎么判断它是否为空?
作者: 601997526 时间: 2011-10-7 17:38
想不到什么好办法- @echo off
- for /f %%i in ('dir /b g:\1.txt\*') do set i=%%i
- if "%i%"=="" echo 文件夹为空
- pause
复制代码
作者: wc726842270 时间: 2011-10-7 17:41
- @echo off
- if exist 2 (rd 2&&echo 目录为空&md 2) else echo 该目录不存在
- pause>nul
复制代码
加了点费话
作者: CrLf 时间: 2011-10-7 17:56
本帖最后由 CrLf 于 2011-10-7 20:39 编辑
- 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
- @echo off
- for /f %%i in ('dir /a /b g:\1.txt\*') do set i=%%i
- if "%i%"=="" echo 文件夹为空
- 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
- @echo off
- set MyFolder=C:\test\123.txt
- if exist "%MyFolder%\" (
- dir /a /b "%MyFolder%" | findstr .*>nul && echo %MyFolder%不是空文件夹 || echo %MyFolder%是空文件夹
- ) else (
- echo 不存在文件夹%MyFolder%
- )
- pause
复制代码
作者: FOR 时间: 2011-10-8 00:52
- @echo off
- findstr . "文件夹\*.*">nul 2>nul&&echo 文件夹不是空的||(
- echo 文件夹是空的、或是只有0字节的文件、或是文件夹不存在
- )
- pause
复制代码
作者: HAT 时间: 2011-10-8 01:19
回复 6# Hello123World
3楼这种先删后建有一个弊端,它会导致文件夹丢失原来可能存在的共享、安全等设置,因此不是一个好方案。
作者: cjiabing 时间: 2011-10-8 01:34
检测有好几种,一是什么都没有,连空格都没有,二是只有空格,而没有其他字符,三是有字符。- @echo off
-
- set bpl_kong=
- for /f "tokens=*" %%i in (C:\BatMPlayer\PlayLists.txt) do if /i "%%i"=="" (
- echo 播放列表为空!
- set bpl_kong=%%i
- ) else (
- echo 播放列表no空!
- set bpl_kong=%%i
- )
- if defined bpl_kong echo 播放列表不是空的!
-
-
-
-
- pause
- set var_kong=
- for /f "tokens=*" %%i in (C:\BatMPlayer\PlayLists.txt) do if /i "%%i"=="" (
- echo 播放列表为空!
- ping /n 3 127.0.1>nul>nul
- ) else (
- set var_kong=%%i
- )
- if defined var_kong echo 播放列表不是空的!
-
- pause
-
-
- @echo off
- ::检测文件是否为空的新方法,利用for自动检测。
- for /f "usebackq tokens=*" %%a in (1.txt) do (
- echo;[%%a]
- if "%%a"=="" (echo;&echo 当你看见我,文件为空,但有空格!&echo;&pause&goto :eof)
- )&&set d=当你看见我,我是存在数据的!
- if "%d%"=="" (echo 当你看见我,文件里一无所有,甚至连空格都没有) else (echo %d%)
- pause
-
-
- for /f "usebackq tokens=*" %%a in (2.txt) do set d=not nul
- if "%d%"=="" (echo nul) else (echo %d%)
复制代码
作者: CrLf 时间: 2011-10-11 22:21
回复 11# HAT
延伸一下,假如改用 move 或者 ren 呢?
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |