其他语言

本类阅读TOP10

·基于Solaris 开发环境的整体构思
·前两天看到的#pragma用法
·用C写的简单学生成绩管理系统
·射频芯片nRF401天线设计的分析
·入门系列--OpenGL最简单的入门
·简单的CreateRemoteThread例程-初学者必看
·BCB数据库图像保存技术
·GNU中的Makefile
·使用AutoMake轻松生成Makefile
·数据结构

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
批处理文件3:实现删除空文件夹树功能

作者:未知 来源:月光软件站 加入时间:2005-5-13 月光软件站

delete.bat
delete.csh
功能:
删除某一目录树中的空目录。
格式:
delete(.bat) dirname
sh delete.csh dirname或(设置了chmod +x delete.csh后)./delete.csh dirname

注意:
1.两者都是通过递归调用实现从目录树的最深层向上逐层删除的功能,主要功能语句,是for循环,判断是否为目录,如果是,进入其子目录,当到达目录的最深层,判断其是否为空(通过两个for循环分别判断是否有文件、文件夹),如果为空,删除;然后逐级向上进行相同操作。
2.在递归调用的过程中,不能使用变量(如下例中的d),如delete.bat文件中
         for /D %%m in (%1\*) do call %0 %%m
         set /A n=0
         for %%m in (%1\*) do set /A n=n+1
         for /D %%m in (%1\*) do set /A n=n+1
         if %n% EQU 0 rmdir %1&&echo delete %1
  不能写作
         for /D %%m in (%d%\*) do call %0 %%m
         set /A n=0
         for %%m in (%d%\*) do set /A n=n+1
         for /D %%m in (%d%\*) do set /A n=n+1
         if %n% EQU 0 rmdir %d%&&echo delete %d%
  因为在批处理文件中,没有堆栈,作为变量d,会在下一层递归中被改变数值,造成运行错误,而不会像高级语言(c语言等)那样。

DOS下

@echo off
for /D %%m in (%1\*) do call %0 %%m
set /A n=0
for %%m in (%1\*) do set /A n=n+1
for /D %%m in (%1\*) do set /A n=n+1
if %n% EQU 0 rmdir %1&&echo delete %1

Linux下

for name in  $1/*
do
if test -d $name
then
  sh delete.csh $name
fi
done

var=0
for x in $1/*
do
if test -d $x
then
  var=`expr $var + 1`
fi
if test -f $x
then
  var=`expr $var + 1`
fi
done
if [ $var -eq 0 ]
 then
   rmdir $1
fi




相关文章

相关软件




月光软件程序下载编程文档电脑教程网站设计网址导航网络文学游戏天地幽默笑话生活休闲写作范文安妮宝贝
电脑技术编程开发网络专区谈天说地情感世界游戏元素分类游戏热门游戏体育运动手机专区业余爱好影视沙龙
音乐天地数码广场教育园地科学大观古今纵横谈股论金人文艺术医学保健动漫图酷二手专区地方风情各行各业

月光软件站·版权所有