中国象棋(CChess)

一、网上对弈:两台电脑同时运行本软件,任何一方(作为客户)输入对方(作为主机)IP地址或计算机名称(同一网内的计算机时),然后点击”连向”。连接成功后,由主机选择”新局”,并主持猜先(猜颜色),以确定哪一方执红棋先行。
二、本机弈棋:运行本软件,即可开始。
三、文档支持:本软件支持文档的存盘及加载。文档分”象棋盘面文件”和”象棋记录文件”,”象棋盘面文件”就是对弈封盘时的局面,当然”象棋盘面文件”可以打开,也就是”解盘”续弈;”象棋记录文件”就是棋谱文件,已保存的”象棋记录文件”可以加载,软件自动识别全局谱或残局谱,并根据棋谱进行”回放”。”回放”提供”倒带”、”步进”、”自动播放”、”快进”等功能。”封盘”双方均可操作,”解盘”则由主机在开新局前操作,对局记录的保存双方同样均可操作,对局记录的加载与回放则在”本机弈棋”模式下进行。两种文档文件在系统中双击均可打开,即文档提供右键快捷菜单。
四、定制棋局:可以自行输入棋局盘面进行对弈,棋局的合法性检查由软件负责,棋局的输入双方均可进行。
五、基本操作:”网上对弈”模式下可以”对话”聊天、”交换”红黑、”悔棋”、”认输”、”提和”。当然除”对话”和”认输”之外,其余均需征得对方同意。”本机弈棋”模式下提供连续单步”悔棋”功能。

下载见软件下载

二十四史简介——明史

《明史》三百三十二卷,包括本纪二十四卷,志七十五卷,列传二百二十卷,表十三卷。它是一部纪传体明代史,记载了自朱元璋洪武元年(公元1368年)至朱由检崇祯十七年(公元1644年)二百多年的历史。
清朝顺治二年(公元1645年)设立明史馆,纂修明史,因国家初创,诸事丛杂,未能全面开展。
康熙四年(公元1665年),重开明史馆,因纂修《清世祖实录》而停止。康熙十八年(公元1679年),以徐元文为监修,开始纂修明史。于乾隆四年(公元1739年)最后定稿,进呈刊刻。从第一次开馆至最后定稿刊刻,前后经过九十多年,是官修史书历时最长的一部。在二十四史中,《明史》以编纂得体、材料翔实、叙事稳妥、行文简洁为史家所称道,是一部水平较高的史书。这反映出编者对史料的考订、史料的运用、对史事的贯通、对语言的驾驭能力都达到较高的水平。
虽然它的篇幅在二十四史中仅次于《宋史》,但读者并不感到冗长而生厌。

VBScript 简介

VBS 是一种 Windows 脚本,它的全称是 Microsoft Visual Basic Script Editon( 微软公司可视化 BASIC 脚本版 ) , VBS 是 Visual Basic 的的一个抽象子集,是系统内置的,用它编写的脚本代码不能编译成二进制文件,直接由 Windows 系统执行,也就是一个叫做宿主 host 的解释源代码并执行,高效、易学,且大部分高级语言能干的事情,它基本上都具备,它可以使各种各样的任务自动化,可以使你从重复琐碎的工作中解脱出来,极大的提高工作效率。

VBS 脚本可以理解为其实就是一种计算机编程语言,但是由于缺少计算机程序设计语言中的部分要素,对于事件的描述能力较弱,所以称为脚本,它最方便的地方就是提供了对 COM 对象的简便支持。那么什么是 COM 对象呢?

COM 对象就是一些具有特定函数功能项程序模块,他们一般以 ocx 或者 dll 作为扩展名,只要找到包含有所需功能的模块文件,并在脚本中规范的引用,就可以实现特定的功能,也就是说 VBS 脚本就是调用现成的“控件”作为对象,用对象的属性和方法实现目的,完全免去了编写代码、设计算法等等麻烦。说白了,就是利用诸多的黑匣子,前提是了解黑匣子的接口。

最方便的是它甚至不需要专门的开发环境,在计算机中,只要有 notepad ,就可以编写 VBS 脚本了,并且可以直接执行。

一、变量

1 、所有单引号后面的内容都被解释为注释。

2 、在 VBScript 中,变量的命名规则遵循标准的命名规则,需要注意的是:在 VBScript 中对变量、方法、函数和对象的引用是不区分大小写的。在申明变量时,要显式地申明一个变量,需要使用关键字 Dim 来告诉 VBScript 你要创建一个变量,并将变量名称跟在其后。申明多个同类型变量,可以用逗号分隔。注意: VBScript 中不允许在申明变量的时候同时给变量赋值。但是允许在一行代码内同时对两个变量进行赋值,中间用冒号分隔。

3 、你可以使用 Option Explicit 来告诉宿主变量必须先声明后使用。

4 、 VBScript 在定义时只有一种变量类型,在实际使用中需要使用类型转换函数来将变量转换成相应的变量类型。

CBool 函数将变量转换成布尔值;

CByte 函数将变量转换为 0 到 255 之间的整数;

CCur 函数、 CDbl 函数和 CSng 函数将变量转换为浮点数值,前者只精确到小数点后四位,后两者要更加精确,数值的范围也要大的多;

CDate 函数将变量转换为日期值;

CInt 函数和 Clng 函数将变量转换为整数,后者的范围比前者要大的多;

CStr 函数将变量转换为字符串。

二、数组

数组的定义与变量非常类似,只需要在变量后描述这个数组的个数和维数。需要注意的是:数组的下标总是从 0 开始,而以数组定义中数值减一结束。也就是说你以要定义一个有十个数据的数组,将这样书写代码: dim array ( 9 ),同样,当你要访问第五个元素时,实际的代码是 array(4) 。当然,你可以通过不指定数组的个数和维数来申明动态数组。等到数组的个数和维数固定后,使用关键字 redim 来改变数组。注意,在改变数组的大小时,数组的数据会被破坏,使用关键字 preserve 来保护数据。例如:Redim 空格 preserve 空格 array 括号个数逗号维数括号

三、操作符

在 VBScript 运算符中,加减乘除都是我们常用的符号,乘方使用的是 ^ ,取模使用的 Mod 。

在比较操作符中,等于、小于、大于、小于等于、大于等于都与我们常用的符号是一致的,而不等于是小于和大于连用。

逻辑运算符为:和操作— >AND 非操作— >NOT 或操作— >OR ;

你可以使用操作符 + 和操作符 & 来连接字符串,一般使用 & 操作符;

另外还有一个比较特殊的操作符 Is 用来比较对象,例如按钮对象,如果对象是同一类型,结果就是真,如果对象不是同一类型,结果就是假。

四、条件语句主要有 if …… then 语句和 select case 语句两种形式

在 if …… then 语句中,其基本形式为:

If 条件 then

‘处理条件的语句

Else

‘处理不满足条件的语句

Endif

如果还有更多的条件需要验证,则需要添加语句

Elseif 条件 then

‘处理条件语句

在 select case 语句中,其基本形式为:

Select case 变量

Case 条件值一

‘处理条件一语句

Case 条件值二

‘处理条件二语句

case else

‘处理语句

End select

注意:在执行字符串比较时,需要特别注意大小写,一般情况下,我们在比较前,使用 lcase 函数将字符串转换成小写,使用 ucase 函数将字符串转换成大写。

五、循环控制语句

循环控制语句有 for …… next 循环、 for …… each 循环、 do …… while 循环、 do …… until 循环、 while 循环五种形式。

在使用循环控制语句前,首先要对循环条件进行判断,如果循环次数是有固定次数的,那么使用 For …… next 循环,其结构为:

For 计数器变量=开始计数值 to 最后计数值

‘执行循环体

Next

如果是需要对数组或对象集合中的每一个元素进行判断,则需要使用 for …… each 循环,其结构为:

For each 循环计数变量 in 要查看的对象或数组

‘执行处理语句

Next

注意:在上述两种循环中随时可以使用 exit for 来退出循环。

如果你希望在条件满足时执行一段代码则使用 do …… while 语句,结构为:

Do while 条件

‘执行循环体

Loop

如果你希望在条件不满足时执行代码,则使用 do …… until 语句,结构为:

Do   until  条件

‘执行循环体

Loop

当然,在这两种循环语句中,你可以使用 exit do 来退出循环

最后一种循环语句是条件满足时一直执行循环,

While 条件

‘执行循环体

Wend

六、使用过程

常用的过程有两种,一种为函数,给调用者返回值,一种为子程序,无返回值,还有一种叫事件的特殊子程序,用的比较少。

函数的基本定义方法为:

Function 函数名称(参数列表)

‘函数代码

‘函数名称=某值 ‘用来返回值

end function

子程序类似,不过没有返回值。

注意:尽管在定义子程序的时候,参数列表要加括号,但在调用子程序的时候,参数列表不加括号,括号只在函数中使用。另外,子程序不能在表达式中使用。

而函数只能出现在赋值语句的右边,或者表达式中,函数不能直接使用,如果必须直接使用函数,则必须使用 call 语句调用,并取消返回值。

二十四史简介——元史

《元史》是系统记载元朝兴亡过程的一部纪传体史书,成书于明朝初年。
明太祖洪武元年(公元1368年),元朝灭亡,朱元璋下令编修《元史》。
洪武二年,以宋濂、王为裁、汪克宽等十六人为纂修,开史局于南京天界寺,进行编写。从洪武二年二月到八月,用一百八十八天的时间,修成顺帝以前各朝的历史,共一百五十九卷。接着,明朝政府派欧阳佑持等十二人到全国各地征集顺帝一朝的资料。洪武三年二月重开史局,仍由宋濂、王任总裁,但纂修人员作了大幅度的调整,这一次纂修共十五人,只有赵埙曾参与第一次工作,其余都是新人。八月书成,共五十三卷,历时一百四十三天。前后两次修成的文稿经过统一加工,共二百一十卷,内本纪四十七卷,志五十八卷,表八卷,列传九十七卷。两次开局共历时三百三十一天。
朱元璋在建国之初,立即着手组织《元史》的编纂,而且在很短的期间成书,主要出于政治上的需要。他的意图是以此来说明元朝的灭亡和明朝的兴起都出于“天命”,而他自己则是“奉天承运”的真命天子。
清代著名学者钱大昕说:“古今史成之速,未有如《元史》者;而文之陋劣,亦无如《元史》者。”《元史》问世后,很多学者对它表示了不满,钱大昕则是不满者中持激烈否定态度的一个。对于《元史》的批评,主要认为它的编纂工作过于草率,没有认真的融合贯通,基本上都是利用已有的文献资料,略加删削修改而成。但是,尽管存在这样那样的问题,《元史》仍是我们今天了解、研究元代历史的极其珍贵的文献。它是最早的全面、系统记述元代历史的著作。

文件系统对象(File System Object)

一、简   

 文件系统对象FSO的英文全称是File System Object ,这种对象模型提出了有别于传统的文件操作语句处理文件和文件夹的方法。通过采用object.method这种在面向对象编程中广泛使用的语法,将一系列操作文件和文件夹的动作通过调用对象本身的属性直接实现。

FSO 对象模型不仅可以象使用传统文件操作语句那样实现文件的创建、改变、移动和删除,而且可以检测是否存在指定的文件夹,如果存在,那么,这个文件夹又位于磁盘上的什么位置。更令人高兴的是FSO 对象模型还可以获取关于文件和文件夹的信息,如名称、创建日期或最近修改日期等以及当前系统中使用的驱动器的信息,如驱动器的种类是CD-ROM还是可移动磁盘,当前磁盘的剩余空间还有多少。而以前要获取这些信息必须通过调用Windows API函数集中的相应函数才能实现。

FSO对象模型包含在Scripting 类型库 (Scrrun.Dll)中,它同时包含了DriveFolderFileFileSystemObjectTextStream五个对象。其中Drive用来收集驱动器的信息,如可用磁盘空间或驱动器的类型;Folder用于创建、删除或移动文件夹,同时可以进行向系统查询文件夹的路径等操作;File的基本操作和Folder基本相同,所不同的是Files的操作主要是针对磁盘上的文件进行的;FileSystemObject是FSO对象模型中最主要对象,它提供了一套完整的可用于创建、删除文件和文件夹,收集驱动器、文件夹、文件相关信息的方法。需要注意的是,FSO对象模型提供的方法是冗余的,也就是说在实际使用中,FSO对象模型中包含的不同对象的不同方法进行的却是同样的操作,而且FileSystemObject对象的方法直接作用于其余对象,所以在后面的文章中并没有单独提到FileSystemObject对象,千万不要以为没有提到就不重要,事实上FileSystemObject对象在整个FSO对象模型中无处不在;最后的TextStream对象则是用来完成对文件的读写操作的。

创建FSO对象模型:

由于FSO对象包含在Scripting 类型库 (Scrrun.Dll)中,所以在使用前首先需要在在工程中引用这个文件,单击“工程”,“引用”,然后在“引用”对话框中选中“Microsoft Scripting Runtime”前的复选框,然后单击“确定”。

要创建FSO对象可以采用两种方法,一种是将一个变量声明为FSO对象类型:Dim fsoTest As New FileSystemObject;另一种是通过CreateObject方法创建一个FSO 对象:Set fsoTest = CreateObject(“Scripting.FileSystemObject”)。在实际使用中具体采用哪种声明方法,可根据个人的使用习惯而定。

完成了FSO对象模型的创建之后,就可以利用创建的对象模型的方法访问下属各个对象的属性来获取所需信息或进行相关操作了

FileSystemObject对象有许多用来操作文件系统的方法和属性。

 二、FileSystemObject中的对象的方法和属性

(一)FSO对象

属性:

1Drives属性

Drives属性是FileSystemObject对象唯一的属性,返回对硬盘驱动器集合(Drives)的引用,是一个只读属性。其语法为:

oFileSysObj.Drives

其中,oFileSysObj代表任何能够返回FileSystemObject对象的对象变量。

Drives属性返回的集合中的每个成员都是Drive对象,表示系统中一个可用的驱动器。可以使用For … Next循环迭代系统中所有驱动器,或者使用Drives集合的Item方法读取某个Drive对象(代表系统中的某个驱动器)。

 方法:

1BuildPath方法

其语法为:

oFileSysObj.BuildPath (Path,Name)

其中,oFileSysObj为任何能够返回FileSystemObject对象的对象变量。参数Path必需,指定驱动器或文件夹路径,String类型,可以是绝对路径也可以是相对路径,不一定要包含驱动器名。参数Name必需,指定附加在Path后的文件夹或文件路径,String类型。参数Path或Name都不一定要求是当前已经存在的路径或文件夹。

BuildPath方法通过合并参数Path和文件夹或文件名生成一个字符串,并且在必要的地方加上正确的主机系统路径分隔符。该方法不能检验新的文件夹或文件名的有效性。

与人工合并两个字符串相比,使用BuildPath函数的惟一好处就是它能够选择正确的路径分隔符。

2FileExists方法

FileExists方法用于判断指定的文件是否存在,若存在则返回True。其语法为:

oFileSysObj.FileExists(FileSpec)

其中,oFileSysObj代表任何能够返回FileSystemObject对象的对象。参数FileSpec必需,代表文件的完整路径,String类型,不能包含有通配符。

如果用户有充分的权限,FileSpec可以是网络路径或共享名,例如:

If ofs.FileExists(“\\TestPath\Test.txt”) Then XXX

3GetFile方法

GetFile方法用来返回一个File对象。其语法为:

oFileSysObj.GetFile (FilePath)

其中,oFileSysObj代表任何能够返回FileSystemObject对象的对象变量。参数FilePath必需,指定路径和文件名,String类型。可以是绝对路径或相对路径。如果FilePath是一个共享名或网络路径,GetFile确认该驱动器或共享是File对象创建进程的一部分。如果参数FilePath指定的路径的任何部分不能连接或不存在,就会产生错误。

GetFile方法返回的是File对象,而不是TextStream对象。File对象不是打开的文件,主要是用来完成如复制或移动文件和询问文件的属性之类的方法。尽管不能对File对象进行写或读操作,但可以使用File对象的OpenAsTextStream方法获得TextStream对象。

要获得所需的FilePath字符串,首先应该使用GetAbsolutePathName方法。如果FilePath包含网络驱动器或共享,可以在调用GetFile方法之前用DriveExists方法来检验所需的驱动器是否可用。

因为在FilePath指定的文件不存在时会产生错误,所以应该在调用GetFile之前调用FileExists方法确定文件是否存在。

必须用Set语句将File对象赋给一个局部对象变量。

4GetFileName方法

GetFileName方法返回给定路径的文件名称部分。其语法为:

oFileSysObj.GetFileName (Path)

其中,oFileSysObj表示任何能够返回FileSystemObject对象的对象变量。参数Path必需,指定路径说明,String类型。如果不能从给定的Path确定文件名,则返回一个零长字符串(””)。Path可以为绝对路径或相对路径。

GetFileName方法不能检验Path中是否存在指定的文件。Path可以为网络驱动器或共享。GetFileName本身不具有智能,它认为字符串中不属于驱动器说明的最后部分就是一个文件名,更像是一个字符串处理函数而不是对象处理方法。

5GetFileVersion方法

GetFileVersion方法返回文件的版本。

6CopyFile方法

CopyFile方法用来复制文件,将文件从一个文件夹复制到另一个文件夹。其语法为:

oFileSysObj.CopyFile Source,Destination [,OverwriteFiles]

其中,oFileSysObj代表任何能够返回FileSystemObject对象的对象变量。参数Source必需,指定要复制的文件的路径和名称,String类型。参数Destination必需,代表复制文件的目标路径和文件名(可选),String类型。参数OverwriteFiles可选,表示是否覆盖一个现有文件的标志,True表示覆盖,False表示不覆盖,Boolean类型,默认值为True。

参数source中源路径可以是绝对路径或相对路径,源文件名可包含通配符但源路径不能。在参数Destination中不能包含通配符。

如果目标路径或文件设置为只读,则无论OverwriteFiles参数的值如何,都将无法完成CopyFile方法。如果参数OverwriteFiles设置为False且Destination指定的文件已经存在,则会产生一个运行时错误“文件已经存在”。如果在复制多个文件时出现错误,CopyFile方法将立即停止复制操作,该方法不具有撤销错误前文件复制操作的返回功能。如果用户有充分的权限,那么source或destination可以是网络路径或共享名,例如:

CopyFile “\\NTSERV1\RootTest\test.txt”,”C:\RootOne”

CopyFile方法可以复制一个保存在特定文件夹中的文件。如果文件夹本身有包含文件的子文件夹,则使用CopyFile方法不能复制这些文件,应该使用CopyFolder方法。

例如:

7CreateTextFile方法

CreateTextFile方法创建一个新的文件并返回其TextStream对象,其语法为:

oFileSysObj.CreateTextFile Filename [,Overwrite[,Unicode]]

其中,oFileSysObj代表任何能够返回FileSystemObject对象的对象变量。参数Filename必需,代表任何有效文件名,String类型。在Filename中不允许使用通配符。Filename可以是相对路径也可以是绝对路径,如果没有指定路径,则使用应用程序的当前驱动器或文件夹作为路径。如果指定的路径不存在,则该方法将失败。

参数Overwrite可选,作为一个标志,指定是否覆盖一个具有相同文件名的现有文件,Boolean类型。默认值为False。

参数Unicode可选,作为一个标志,指明用Unicode格式还是ASCⅡ格式写文件,Boolean类型。如果设置为True,则以Unicode格式创建文件,否则创建一个ASCⅡ文本文件。默认值为False。

只有写操作才能使新创建的文本文件自动打开,如果以后希望读取该文件,则必须选关闭它再以读模式重新打开该文件。

如果参数Filename中指定的路径设置为只读,则不论参数Overwrite的值如保,CreateTextFile方法都将失败。

如果用户有充分的权限,那么参数Filename可以是网络路径或共享名,例如:

CreateTextFile “\\NTSERV1\RootTest\myFile.doc”

必须使用Set语句将TextStream对象赋值给局部对象变量。

8MoveFile方法

MoveFile方法用来移动文件,将文件从一个文件夹移动到另一个文件夹。其语法为:

oFileSysObj.MoveFile source,destination

其中,oFileSysObj代表任何能够返回FileSystemObject对象的对象变量。参数source必需,指定要移动的文件的路径,String类型。参数destination必需,指定文件移动操作中的目标位置的路径,String类型。

如果Source包含通配符或者destination以路径分隔符结尾,则认为destination是一个路径,否则认为destination的最后一部分是文件名。

如果目标文件已经存在,则将出现一个错误。

source可以包含通配符,但只能出现在它的最后一部分中。

destination参数不能包含通配符。

source或destination可以是相对路径或绝对路径,可以是网络路径或共享名。

MoveFile方法在开始操作前先解析source和destination这两个参数。

9DeleteFile方法

DeleteFile方法删除指定的一个或多个文件。其语法为:

oFileSysObj.DeleteFile FileSpec[,Force]

其中,oFileSysObj代表任何能够返回FileSystemObject对象的对象变量。参数FileSpec必需,代表要删除的单个文件或多个文件的名称和路径,String类型,可以在路径的最后部分包含通配符,可以为相对路径或绝对路径。如果在FileSpec中只有文件名,则认为该文件在应用程序的当前驱动器和文件夹中。参数Force可选,如果将其设置为True,则忽略文件的只读标志并删除该文件,Boolean类型,默认值为False。

如果指定要删除的文件已经打开,该方法将失败并出现一个“Permission Denied”错误。如果找不到指定的文件,则该方法失败。

如果在删除多个文件的过程中出现错误,DeleteFile方法将立即停止删除操作,即不能删除余下的文件部分。该方法不具有撤销产生错误前文件删除操作的返回功能。

如果用户有充分的权限,源路径或目标路径可以是网络路径或共享名。例如:

DeleteFile “\\NTSERV1\RootTest\MyFile.doc”

DeleteFile方法永久性地删除文件,并不把这些文件移到回收站中。

10DriveExists方法

DriveExists方法用来判断在本地计算机或者网络上是否存在指定的磁盘,若存在则返回True。其语法为:

oFileSysObj.DriveExists (DriveSpec)

其中,oFileSysObj代表任何能够返回FileSystemObject对象的对象变量。参数DriveSpec必需,代表路径或驱动器名,String类型。如果DriveSpec是一个Windows驱动器名,则其后面不需要跟冒号,例如“C”和“C:”是一样的。

DriveExists方法不能返回可移动驱动器的当前状态,要实现这一目的,必须使用指定驱动器的IsReady属性。

如果用户有充分的权限,DriveSpec可以是网络路径或共享名,例如:

If ofs.DriveExists(“\\NTESERV1\d$”) Then

在调用位于某驱动器上一个远程ActiveX服务器中的函数前,最好先使用DriveExists方法检测网络上是否存在该驱动器。

11GetDrive方法

GetDrive方法返回Drive对象,即获得对指定驱动器的Drive对象的引用。其语法为:

oFileSysObj.GetDrive (drivespecifier)

其中,oFileSysObj代表任何能够返回FileSystemObject对象的对象变量。参数drivespecifier必需,代表驱动器名、共享名或网络路径,String类型。如果drivespecifier是一个共享名或网络路径,GetDrive确认它是Drive对象创建进程的一部分,否则会产生运行时错误“找不到路径”。如果指定的驱动器没有连接上或者不存在,则会出现运行时错误“设备不可用”。

如果要从路径中导出drivespecifier字符串,应该首先用GetAbsolutePathName来确保驱动器是路径的一部分,然后在调用GetDriveName从全限定路径中提取出驱动器之前,用FolderExists方法检验路径是否有效。

如果driverspecifier是一个网络驱动器或共享,在调用GetDrive方法之前,应该用DriveExists方法检验所需的驱动器是否可用。

必须用Set语句将Drive对象赋给局部对象变量。

12GetDriveName方法

GetDriveName方法返回一个包含硬盘名称或者网络共享名称的字符串。即返回给定路径的驱动器名,如果从给定的路径中不能确定驱动器名,则返回一个零长字符串(””)。其语法为:

oFileSysObj.GetDriveName (Path)

其中,oFileSysObj代表任何能够返回FileSystemObject对象的对象变量。参数Path必需,指定路径,String类型。

GetDriveName不能检验Path中是否存在指定的驱动器。Path可以是网络驱动器或共享。

13GetExtensionName方法

返回给定路径中文件的扩展名。其语法为:

oFileSysObj.GetExtensionName (Path)

其中,oFileSysObj代表任何能够返回FileSystemObject对象的对象变量。参数Path必需,表示路径说明,String类型。如果不能确定Path中的扩展名,则返回一个零长字符串。

GetExtensionName方法不能检验Path是否有效,Path可以为网络路径或共享。GetExtensionName没有智能功能,它简单地解析一个字符串,并返回Path最后部分中最后一个点后的文本。

14FolderExists方法

FolderExists方法可以判断指定的文件夹是否存在,若存在则返回True。其语法为:

oFileSysObj.FolderExists(FolderSpec)

其中,oFileSysObj代表任何能够返回FileSystemObject对象的对象变量。参数FolderSpec指定文件夹的完整路径,String类型,不能包含通配符。

如果用户有充分的权限,FolderSpec可以是网络路径或共享名,例如:

If ofs.FileExists (“\\NTSERV1\d$\TestPath\”) Then XXX

15GetAbsolutePathName方法

将相对路径转变为一个全限定路径(包括驱动器名),返回一个字符串,包含一个给定的路径说明的绝对路径。其语法为:

oFileSysObj.GetAbsolutePathName (Path)

其中,oFileSysObj代表任何能够返回FileSystemObject对象的对象变量。参数Path必需,代表路径说明,String类型。

“.”返回当前文件夹的驱动器名和完整路径。“..”返回当前文件夹的父文件夹的驱动器名和路径。“filename”返回当前文件夹中的文件的驱动器名、路径及文件名。

所有相对路径名均以当前文件夹为基准。

如果没有明确地提供驱动器作为Path的一部分,就以当前驱动器作为Path参数中的驱动器。在Path中可以包含任意个通配符。

对于映射网络驱动器和共享而言,这种方法不能返回完整的网络地址,而是返回全限定的本地路径和本地驱动器名。

GetAbsolutePathName不能检验指定路径中是否存在某个给定的文件或文件夹。

16GetBaseName方法

返回路径的最后部分的名称,不包含扩展名。其语法为:

oFileSysObj.GetBaseName (Path)

其中,oFileSysObj代表任何能够返回FileSystemObject对象的对象变量。参数Path必需,代表路径说明,String类型。Path中最后部分的文件扩展名不包含在返回的字符串中。

GetBaseName方法不能检验Path中是否存在给定的文件或文件夹。GetBaseName方法没有舍去文件扩展名并返回Path的基本名称的智能功能。也就是说,它不能识别路径的最后部分是路径还是文件名。如果最后部分包括一个或多个点“.”,它仅仅删除最后一个占以及该点后的文本。所以如果Path为“.”,GetBaseName方法返回一个空字符串;如果Path为“..”,GetBaseName方法返回“.”。换句话说,它只不过是一个字符串处理函数,而不是一个文件函数。

17GetFolder方法

GetFolder方法返回Folder对象。其语法为:

oFileSysObj.GetFolder (FolderPath)

其中,oFileSysObj代表任何能返回FileSystemObject对象的对象变量。参数FolderPath必需,指定所需文件夹的路径,String类型,可以为相对路径或绝对路径。如果FolderPath是共享名或网络路径,GetFolder确认该驱动器或共享是File对象创建进程的一部分。如果FolderPath的任何部分不能连接或不存在,就会产生一个错误。

要获得所需的Path字符串,首先应该使用GetAbsolutePathName方法。如果FolderPath包含一个网络驱动器或共享,可以在调用GetFolder方法之前使用DriveExists方法确认指定的驱动器是否可用。由于GetFolder方法要求FolderPath是一个有效文件夹的路径,所以应调用FolderExists方法来检验FolderPath是否存在。

必须使用Set语句将Folder对象赋给一个局部对象变量。

18GetParentFolderName方法

返回给定路径中最后部分前的文件夹名,其语法为:

oFileSysObj.GetParentFolderName (Path)

其中,oFileSysObj代表任何能够返回FileSystemObject对象的对象变量。参数Path必需,指定路径说明,String类型。

如果从Path中不能确定父文件夹名,就返回一个零长字符串(””)。Path可以为相对路径或绝对路径。可以是网络驱动器或共享。

GetParentFolderName方法不能检验Path的某个部分是否存在。

GetParentFolderName方法认为Path中不属于驱动器说明的那部分字符串除了最后一部分外余下的字符串就是父文件夹。除此之外它不做任何其他检测,更像是一个字符串解析和处理例程而不是与对象处理有关的例程。

19GetSpecialFolder方法

GetSpecialFolder方法返回操作系统文件夹路径,其中0代表Windows文件夹,1代表System(系统)文件夹,2代表Temp(临时)文件夹。其语法为:

oFileSysObj.GetSpecialFolder (SpecialFolder)

其中,oFileSysObj代表任何能够返回FileSystemObject对象的对象变量。参数SpecialFolder必需,为特殊的文件夹常数,表示三种特殊系统文件夹中其中一个的值。

可以使用Set语句将Folder对象赋给一个局部对象变量,但是如果只对检索特殊的文件夹感兴趣,就可以使用下列语句来实现:

sPath=oFileSys.GetSpecialFolder (iFolderConst)

或:

sPath=oFileSys.GetSpecialFolder (iFolderConst).Path

由于Path属性是Folder对象的缺省属性,所认第一个语句有效。因为不是给一个对象变量赋值,所以赋给sPath的值是缺省的Path属性值,而不是对象引用。

20GetTempName方法

返回系统创建的一个临时文件或文件夹名。其语法为:

oFileSysObj.GetTempName

其中,oFileSysObj代表任何能够返回FileSystemObject对象的对象变量。

GetTempName方法不能创建临时文件或文件夹,它仅仅提供一个可用于CreateTextFile方法的文件或文件夹名。

一般来说,不必创建自已的临时文件名。Windows在Windows API中提供了一种算法来创建特殊的临时文件或文件夹名,这样Windows才能识别它们。GetTempName很好地包装了GetTempFilename API函数。

21CreateFolder方法

CreateFolder方法用于在指定的路径下创建一个新文件夹,并返回其Folder对象。其语法为:

oFileSysObj.CreateFolder (Path)

其中,oFileSysObj代表任何能够返回FileSystemObject对象的对象变量。参数Path必需,为一个返回要创建的新文件夹名的表达式,String类型。Path指定的路径可以是相对路径也可以是绝对路径,如果没有指定路径则使用当前驱动器和目录作为路径。在新的文件夹名中不能使用通配符。

如果参数Path指定的路径为只读,则CreateFolder方法将失败;如果参数Path指定的文件夹已经存在,就会产生运行时错误“文件已经存在”。如果用户有充分的权限,则参数Path可以指定为网络路径或共享名,例如:

CreateFolder “\\NTSERV1\RootTest\newFolder”

在实际使用时,必须使用Set语句将Folder对象赋给对象变量。

22CopyFolder方法

CopyFolder方法用于复制文件夹,即将一个文件夹的内容(包括其子文件夹)复制到其他位置。其语法为:

oFileSysObj.CopyFolder Source,Destination[,OverwriteFiles]

其中,参数oFileSysObj代表任何能够返回FileSystemObject对象的对象变量。参数Source必需,指定要复制的文件夹的路径和文件夹名,String类型,必须使用通配符或者非路径分隔符来结束。参数Destination必需,指定文件夹复制操作的目标文件夹的路径,String类型。参数OverwriteFiles可选,表示是否被覆盖一个现有文件的标志,True表示覆盖,False表示不覆盖,Boolean类型。

通配符只能在参数Source中使用,但是只能放在最后的组件中。在参数Destination中不能使用通配符。

除非不允许使用通配符,否则就可以把源文件夹中的所有子文件夹和文件都复制到Destination指定的文件夹中,也就是说CopyFolder方法是递归的。

如果参数Destination以一个路径分隔符结束或者参数Source以一个通配符结束,CopyFolder方法就认为参数Source中的指定的文件夹存在于参数Destination中,否则就创建这样一个文件夹。

 如果参数Destination指定的目标路径或任意文件被设置成只读属性,则不论OverwriteFiles的值如何,CopyFolder方法者将失效。

如果OverwriterFiles设置为False,而参数Source指定的源文件夹或任何文件存在于参数Destination中,将产生运行时错误“文件已经存在”。

如果在复制多个文件夹时出现错误,CopyFolder方法立即停止复制操作,不再复制余下要复制的文件。该方法不具有撤销产生错误前文件复制操作的返回功能。

如果用户有充分的权限,source或destination都可以是网络路径或共享名,例如:

CopyFolder “C:\Rootone”,”\\NTSERV1\d$\RootTwo\”

23MoveFolder方法

MoveFolder方法用来移动文件夹,将文件夹及其文件和子文件夹一起从某个位置移动到另一个位置。其语法为:

oFileSysObj.MoveFolder source,destination

其中,oFileSysObj代表任何能够返回FileSystemObject对象的对象变量。参数Source指定要移动的文件夹的路径,String类型。参数destination指定文件夹移动操作中目标位置的路径,String类型。

Source必须以通配符或非路径分隔符结束,可以使用通配符,但必须出现在最后一部分中。destination不能使用通配符。除非不允许使用通配符,否则源文件夹中所有的子文件夹和文件都被复制到destination指定的位置,也就是说MoveFolder方法是递归的。

如果destination用路径分隔符结束或者source用通配符结束,MoveFolder就认为source中指定的文件夹存在于destination中。

Source和destination可以为绝对路径或相对路径,可以为网络路径或共享名。

MoveFile方法在开始操作前先解析source和destination这两个参数。

24DeleteFolder方法

DeleteFolder方法用于删除指定的文件夹及其所有的文件和子文件夹。其语法为:

oFileSysObj.DeleteFolder FileSpec[,Force]

其中,oFileSysObj代表任何能够返回FileSystemObject对象的对象变量。参数FileSpec必需,指定要删除的文件夹的名称和路径,String类型。在参数FileSpec中,可以在路径的最后部分包含通配符,但不能用路径分隔符结束,可以为相对路径或绝对路径。

参数Force可选,Boolean类型,如果设置为True,将忽略文件的只读标志并删除这个文件。默认为False。如果参数Force设置为False并且文件夹中的任意一个文件为只读,则该方法将失败。如果找不到指定的文件夹,则该方法失败。

如果指定的文件夹中有文件已经打开,则不能完成删除操作,且产生一个“Permisson Denied”错误。DeleteFolder方法删除指定文件夹中的所有内容,包括其他文件夹及其内容。

如果在删除多个文件或文件夹时出现错误,DeleteFolder方法将立即停止删除操作,即不能删除余下的文件夹或文件。该方法不具有撤销产生错误前文件夹删除操作的返回功能。

DeleteFolder方法永久性删除文件夹,并不把它们移到回收站中。

如果用户有充分的权限,源路径和目标路径可以是网络路径或共享名,例如:

DeleteFolder “\\RootTest”

25OpenTextFile方法

OpenTextFile方法用于打开(或创建)文本文件以进行读取或写入操作,返回一个TextStream对象。其语法为:

oFileSysObj.OpenTextFile (FileName[,IOMode[,Create[,Format]]])

其中,oFileSysObj代表任何能够返回FileSystemObject对象的对象变量。参数FileName必需,指定要打开的文件的路径和文件名,String类型,FileName的路径部分可为相对路径或绝对路径。参数IOMode可选,指定文件打开模式的一个常数(参见前文的表格),默认设置为ForReading(1)。参数Create可选,一个Boolean型标志,说明如果在给定的路径中找不到文件,是否应该创建该文件。参数Format可选,一个Tristate常数(参见前文的表格),指定打开文件的格式为ASCⅡ或Unicode格式,默认设置为ASCⅡ(False)。

如果另一个进程已经打开了指定文件,该方法将失败,并产生一个“Permission Denied”错误。

要保证OpenTextFile方法成功执行,可以在调用它之前使用GetAbsolutePath和FileExists方法。

IOMode的值只能是一个常量值,例如,下面的方法调用:

lMode=ForReading or ForWritingoFileSys.OpenTextStream(strFileName,lMode) ‘错误

将产生运行时错误“无效的过程调用或参数”。

如果用户有充分的权限,FileName的路径部分可以是网络路径或共享名,例如:

OpenTextFile “\\NTSERV1\d$\RootTwo\myFile.txt”

(二)Drive对象

上面已经提到Drive对象是用来获取当前系统中各个驱动器的信息的。由于Drive对象没有方法,其应用都是通过属性表现出来的,所以我们必须熟悉Drive对象的属性:

AvailableSpace:返回在指定的驱动器或网络共享上的用户可用的空间容量。

DriveLetter :返回某个指定本地驱动器或网络驱动器的字母,这个属性是只读的。

DriveType:返回指定驱动器的磁盘类型。

FileSystem: 返回指定驱动器使用的文件系统类型。

FreeSpace:返回指定驱动器上或共享驱动器可用的磁盘空间,这个属性是只读的。

IsReady:确定指定的驱动器是否准备好。

Path :返回指定文件、文件夹、或驱动器的路径。

RootFolder :返回一个 Folder 对象,该对象表示一个指定驱动器的根文件夹。只读属性。

SerialNumber:返回用于唯一标识磁盘卷标的十进制序列号。

ShareName:返回指定驱动器的网络共享名

TotalSize :以字节为单位,返回驱动器或网络共享的总空间大小。

VolumeName :设置或返回指定驱动器的卷标名。

从上面的属性可以看到Drive对象基本上包含了日常操作所需的全部的驱动器信息,因此在使用中是非常方便的。

(三)Folder对象

在FSO 对象模型中,提供了丰富的有关文件夹操作的方法,这些方法分别是:

FileSystemObject对象中有关文件夹的方法:

CreateFolder :创建一个文件夹 。

DeleteFolder:删除一个文件夹 。

MoveFolder :移动一个文件夹 。

CopyFolder:复制一个文件夹 。

FolderExists: 查找一个文件夹是否在驱动器上 。

GetFolder :获得已有Folder对象的一个实例 。

GetParentFolderName: 找出一个文件夹的父文件夹的名称。

GetSpecialFolder: 找出系统文件夹的路径。

Folder对象的方法:

Delete :创建一个文件夹 。

Move :移动一个文件夹 。

Copy:复制一个文件夹。

Name:检索文件夹的名称。

在此需要强调一点,前面我们曾经提到过FSO对象模型包含的方法是冗余的,所以Folder对象的Delete、Move、Copy方法和FileSystemObject对象的DeleteFolder、MoveFolder、CopyFolder方法实际上是相同的,因此在实际使用中可以任选其中的一种。

(四)File对象和TextStream对象

由于有关File对象的复制,删除,移动等操作和Folder对象类似,所以这部分内容就不再重复。这里主要讲述利用File对象和TextStream对象操作文本文件。

通常对文本文件的操作包括在文本文件中创建数据,在文本文件中添加数据,删除文本文件的数据等操作。这些操作都可以通过File对象和FileSystemObject对象的相关方法完成。不过在使用之前,首先要创建一个文本文件,当然可以通过使用FileSystemObject对象的 CreateTextFile 方法来完成。