Board logo

标题: [文件操作] [已解决]批处理判断空目录(有子目录) [打印本页]

作者: freesoft00    时间: 2015-11-1 22:39     标题: [已解决]批处理判断空目录(有子目录)

本帖最后由 freesoft00 于 2015-11-2 00:20 编辑

dir /b abc\|findstr .>nul&&echo 非空||echo 空
这样如果abc有子目录的话,就判断不准确了,是否有办法只判断abc目录,而不理会是否有子目录。
作者: /zhqsystem/zhq    时间: 2015-11-1 23:00

  1. dir/ad/b 新建文件夹\|dir/a-d/b 新建文件夹\ >nul 2>nul&&echo,有数据||echo,无数据
复制代码

作者: freesoft00    时间: 2015-11-1 23:01

for /f "usebackq delims=" %%i in ("d:\www.txt")
如果没有d:\www.txt则报错。而下面这个则是错误的,
for /f "usebackq delims=" %%i in ("d:\www.txt"2^>nul)
应该如何能防止没有文件的时候报错。
作者: WHY    时间: 2015-11-1 23:09

  1. dir /s /a-d abc\ >nul 2>&1 && echo 非空||echo 空
复制代码

作者: freesoft00    时间: 2015-11-1 23:10

回复 2# /zhqsystem/zhq


    可以,感谢!
作者: freesoft00    时间: 2015-11-1 23:13

回复 4# WHY


        这个判断不准确,加了/s参数,子目录如果有文件的话,也会把上级目录判断为非空。
作者: WHY    时间: 2015-11-1 23:15

回复 3# freesoft00
  1. for /f "delims=" %%i in ('type "d:\www.txt" 2^>nul') do echo %%i
复制代码
  1. (for /f "usebackq delims=" %%i in ("d:\www.txt") do echo %%i) 2>nul
复制代码

作者: WHY    时间: 2015-11-1 23:20

回复 6# freesoft00


    哦 理解错了
把 /s 去掉
作者: /zhqsystem/zhq    时间: 2015-11-1 23:21

回复 3# freesoft00
在for的上一行加入dir/a-d/b "路径\文件名包含后缀">nul 2>nul&&(
for的循环
)
注意:括号会比原来的多一组,不建议用IF因为IF判断文件必须先判断有没有该同名的文件夹[if判断文件存在,会增加多判断一条指令,写起来代码也比较多]
作者: freesoft00    时间: 2015-11-2 00:18

回复 9# /zhqsystem/zhq


    谢谢了!
作者: WHY    时间: 2015-11-3 09:25

回复 9# /zhqsystem/zhq


    抬下扛
  1. @echo off
  2. if not exist d:\a.txt\ if exist d:\a.txt (
  3.     for /f "delims=" %%i in (d:\a.txt) do echo %%i
  4. )
  5. pause
复制代码
比 dir /a-d &&...多几个字符不假, 可读性、执行效率不比dir差
作者: /zhqsystem/zhq    时间: 2015-11-3 22:41

回复 11# WHY
如果先判断文件在判断文件夹你那IF还有用吗?[可以继续抬下去顺带讨论]请楼上给出回答
作者: WHY    时间: 2015-11-3 23:49

回复  WHY
如果先判断文件在判断文件夹你那IF还有用吗?[可以继续抬下去顺带讨论]请楼上给出回答
/zhqsystem/zhq 发表于 2015-11-3 22:41



    sure




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