文档章节

VBS脚本:删除扩展名不是*.h、*.c、*.cpp的全部文件

北风其凉
 北风其凉
发布于 2014/08/29 16:47
字数 554
阅读 58
收藏 0

用VC6.0写了好多代码,编译过后生成了很多不想要的文件。于是我写了下面这个脚本,只把里面的代码文件留下

脚本编写的思想如下:

先进行输入合法性检查

脚本使用例程CleanFolder遍历一个文件夹

1)使用CleanFolder递归遍历该文件夹下的所有子文件夹

2)如果该子文件夹的大小为0,则删除这个文件夹

3)遍历该文件夹下的所有文件,扩展名不是 *.h *.c *.cpp,则删除该文件

'脚本用途:遍历一个文件夹,执行下列操作
'1)如果一个文件不属于 *.c *.cpp *.h 类型则删除
'2)如果一个子文件夹中没有文件,则删除该文件夹
'输入参数:Argument(0) 被检查文件夹地址

Option Explicit

'检查输入参数是否合法
Dim FolderAddress
If WScript.Arguments.Count <> 1 Then
    WScript.Echo "参数输入错误!请输入要遍历的文件夹地址。"
    WScript.Quit
Else
    FolderAddress = WScript.Arguments(0)
    WScript.Echo "准备遍历文件夹:"  & FolderAddress
End If 

Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")

'考察文件夹是否存在
If Not FSO.FolderExists(FolderAddress) Then 
    WScript.Echo "文件夹非法!请检查是否有拼写错误。"
    WScript.Quit
End If 

CleanFolder FolderAddress

'例程:递归删除一个文件夹内不符合规格的文件和文件夹
Sub CleanFolder(Folder)

    WScript.Echo "开始遍历文件夹:" & FolderAddress

    Dim SubFolder, File
    '检查所有子文件夹
    For Each SubFolder In FSO.GetFolder(Folder).SubFolders
        WScript.Echo "发现文件夹:" & SubFolder
        CleanFolder SubFolder
        '如果文件夹为空,则删除该文件夹
        If FSO.GetFolder(SubFolder).Size = 0 Then
            WScript.Echo "删除空文件夹:" & SubFolder
            FSO.DeleteFolder(SubFolder)
        End If 
    Next
    '删除所有文件
    For Each File In FSO.GetFolder(Folder).Files
        WScript.Echo "发现文件:" & File
        '在这里指定要保留的文件扩展名,不属于该扩展名的文件将被删除
        If UCase(FSO.GetExtensionName(File.Name)) <> "H" _
        And UCase(FSO.GetExtensionName(File.Name)) <> "C" _
        And UCase(FSO.GetExtensionName(File.Name)) <> "CPP" Then
            WScript.Echo "删除文件:" & File
            FSO.DeleteFile(File)
        End If 
    Next
    
End Sub

调用本脚本,可以在命令行中输入下面的命令运行

cscript 脚本地址 待检查文件夹地址 //nologo

END

© 著作权归作者所有

共有 人打赏支持
北风其凉

北风其凉

粉丝 115
博文 498
码字总数 463468
作品 4
朝阳
程序员
私信 提问
C/C++ 通用 Makefile

Generic Makefile for C/C++ Program ================================================== Keywords: Makefile, make, Generic, C/C++ Author: whyglinux (whyglinux AT hotmail DOT com) D......

wdliming
2011/11/23
0
0
关键词: 和

关键词:< iostream > 和 < iostream.h > 你写程序的时候,用< iostream >还是< iostream.h >? 你知道它们有什么区别么?还是认为他们根本就是一样的? 下面听我给你吹(文中纯属个人言论,...

AlphaJay
2010/06/21
0
0
Android: NDK编程入门笔记

为何要用到NDK? 概括来说主要分为以下几种情况: 1. 代码的保护,由于apk的java层代码很容易被反编译,而C/C++库反汇难度较大。 2. 在NDK中调用第三方C/C++库,因为大部分的开源库都是用C/C...

gongweixin
2013/04/23
0
3
Android: NDK编程入门笔记

为何要用到NDK? 概括来说主要分为以下几种情况: 1. 代码的保护,由于apk的java层代码很容易被反编译,而C/C++库反汇难度较大。 2. 在NDK中调用第三方C/C++库,因为大部分的开源库都是用C/C...

xubohui
2012/08/20
0
0
Android: NDK编程入门笔记

为何要用到NDK? 概括来说主要分为以下几种情况: 1. 代码的保护,由于apk的java层代码很容易被反编译,而C/C++库反汇难度较大。 2. 在NDK中调用第三方C/C++库,因为大部分的开源库都是用C/C...

JORDANSG
2012/08/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Mariadb二进制包安装,Apache安装

安装mariadb 下载二进制包并解压 [root@test-a src]# wget https://downloads.mariadb.com/MariaDB/mariadb-10.2.6/bintar-linux-glibc_214-x86_64/mariadb-10.2.6-linux-glibc_214-x86_64.t......

野雪球
10分钟前
0
0
ConcurrentHashMap 高并发性的实现机制

ConcurrentHashMap 的结构分析 为了更好的理解 ConcurrentHashMap 高并发的具体实现,让我们先探索它的结构模型。 ConcurrentHashMap 类中包含两个静态内部类 HashEntry 和 Segment。HashEnt...

TonyStarkSir
今天
3
0
大数据教程(7.4)HDFS的java客户端API(流处理方式)

博主上一篇博客分享了namenode和datanode的工作原理,本章节将继前面的HDFS的java客户端简单API后深度讲述HDFS流处理API。 场景:博主前面的文章介绍过HDFS上存的大文件会成不同的块存储在不...

em_aaron
昨天
2
0
聊聊storm的window trigger

序 本文主要研究一下storm的window trigger WindowTridentProcessor.prepare storm-core-1.2.2-sources.jar!/org/apache/storm/trident/windowing/WindowTridentProcessor.java public v......

go4it
昨天
6
0
CentOS 生产环境配置

初始配置 对于一般配置来说,不需要安装 epel-release 仓库,本文主要在于希望跟随 RHEL 的配置流程,紧跟红帽公司对于服务器的配置说明。 # yum update 安装 centos-release-scl # yum ins...

clin003
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部