FSO操作大全2007-03-19 16:50如何删除一个文件 

[JScript] 

function DeleteFile(filespec) 

{ 

var fso; 

fso = new ActiveXObject("Scripting.FileSystemObject"); 

fso.DeleteFile(filespec); 

} 

[VBScript] 

Sub DeleteAFile(filespec) 

Dim fso 

Set fso = CreateObject("Scripting.FileSystemObject") 

fso.DeleteFile(filespec) 

End Sub 
FileExists 方法 

请参阅 

DriveExists 方法 | FolderExists 方法 | GetFile 方法 | GetFileName 方法 

应用于:FileSystemObject 对象 

语言 

JScript VBScript
显示所有语言 

如果指定文件存在返回 True ;否则返回 False。 object.FileExists(filespec) 

参数 

object 

必选项。应为 FileSystemObject 的名称。 

filespec 

必选项。需要判定是否存在的文件的名称. 如果文件可能不在当前文件夹中,那么必须提供完整的路径说明(可以是绝对的或相对的)。 

下面的例子说明了 FileExists 方法的用法。 [JScript] 

function ReportFileStatus(filespec) 

{ 

var fso, s = filespec; 

fso = new ActiveXObject("Scripting.FileSystemObject"); 

if (fso.FileExists(filespec)) 

s += " exists."; 

else 

s += " doesn't exist."; 

return(s); 

} 

[VBScript] 

Function ReportFileStatus(filespec) 

Dim fso, msg 

Set fso = CreateObject("Scripting.FileSystemObject") 

If (fso.FileExists(filespec)) Then 

msg = filespec & " exists." 

Else 

msg = filespec & " doesn't exist." 

End If 

ReportFileStatus = msg 

End Function 

请参阅 

DriveExists 方法 | FolderExists 方法 | GetFile 方法 | GetFileName 方法 

应用于:FileSystemObject 对象 
脚本运行时库 
处理文件 

语言 

JScript VBScript
显示所有语言 

有两种主要的文件处理类型: 创建、添加或删除数据,以及读取文件 

移动、复制和删除文件 

创建文件 

创建空文本文件(有时被叫做“文本流”)有三种方法。 第一种方法是用 CreateTextFile 方法。下面的示例示范了如何用 CreateTextFile 方法创建文本文件:
[VBScript] 

Dim fso, f1 

Set fso = CreateObject("Scripting.FileSystemObject") 

Set f1 = fso.CreateTextFile("c:\testfile.txt", True) 

[JScript] 

var fso, f1; 

fso = new ActiveXObject("Scripting.FileSystemObject"); 

f1 = fso.CreateTextFile("c:\\testfile.txt", true); 

创建文本文件的第二种方法是,使用 FileSystemObject 对象的 OpenTextFile 方法,并设置 ForWriting 标志。 [VBScript] 

Dim fso, ts 

Const ForWriting = 2 

Set fso = CreateObject("Scripting. FileSystemObject") 

Set ts = fso.OpenTextFile("c:\test.txt", ForWriting, True) 

[JScript] 

var fso, ts; 

var ForWriting= 2; 

fso = new ActiveXObject("Scripting.FileSystemObject"); 

ts = fso.OpenTextFile("c:\\test.txt", ForWriting, true); 

创建文本文件的第三种方法是,使用 OpenAsTextStream 方法,并设置 ForWriting 标志。要使用这种方法,使用下面的代码: [VBScript] 

Dim fso, f1, ts 

Const ForWriting = 2 

Set fso = CreateObject("Scripting.FileSystemObject") 

fso.CreateTextFile ("c:\test1.txt") 

Set f1 = fso.GetFile("c:\test1.txt") 

Set ts = f1.OpenAsTextStream(ForWriting, True) 

[JScript] 

var fso, f1, ts; 

var ForWriting = 2; 

fso = new ActiveXObject("Scripting.FileSystemObject"); 

fso.CreateTextFile ("c:\\test1.txt"); 

f1 = fso.GetFile("c:\\test1.txt"); 

ts = f1.OpenAsTextStream(ForWriting, true); 

添加数据到文件中 

一旦创建了文本文件,使用下面的三个步骤向文件添加数据: 打开文本文件。
写入数据。
关闭文件。
要打开现有的文件,则使用 FileSystemObject 对象的 OpenTextFile 方法或 File 对象的 OpenAsTextStream 方法。
要写数据到打开的文本文件,则根据下表所述任务使用 TextStream 对象的 Write、WriteLine 或 WriteBlankLines 方法。
任务 方法 

向打开的文本文件写数据,不用后续一个新行字符。 Write 

向打开的文本文件写数据,后续一个新行字符。 WriteLine 

向打开的文本文件写一个或多个空白行。 WriteBlankLines 要关闭一个打开的文件,则使用 TextStream 对象的 Close 方法。
注意 新行字符包含一个或几个字符(取决于操作系统),以把光标移动到下一行的开始位置(回车/换行)。注意某些字符串末尾可能已经有这个非打印字符了。 

下面的例子示范了如何打开文件,和同时使用三种写方法来向文件添加数据,然后关闭文件: [VBScript] 

Sub CreateFile() 

Dim fso, tf 

Set fso = CreateObject("Scripting.FileSystemObject") 

Set tf = fso.CreateTextFile("c:\testfile.txt", True) 

' 写一行,并带有一个新行字符。 

tf.WriteLine("Testing 1, 2, 3.") 

' 向文件写三个新行字符。 

tf.WriteBlankLines(3) 

' 写一行。 

tf.Write ("This is a test.") 

tf.Close 

End Sub 

[JScript] 

function CreateFile() 

{ 

var fso, tf; 

fso = new ActiveXObject("Scripting.FileSystemObject"); 

tf = fso.CreateTextFile("c:\\testfile.txt", true); 

// 写一行,并带有一个新行字符。 

tf.WriteLine("Testing 1, 2, 3.") ; 

// 向文件写三个新行字符。 

tf.WriteBlankLines(3) ; 

// 写一行。 

tf.Write ("This is a test."); 

tf.Close(); 

} 

读取文件 

要从文本文件读取数据,则使用 TextStream 对象的 Read、ReadLine 或 ReadAll 方法。下表描述了不同的任务应使用哪种方法。 任务 方法 

从文件读取指定数量的字符。 Read 

读取一整行(一直到但不包括新行字符)。 ReadLine 

读取文本文件的整个内容。 ReadAll 如果使用 Read 或 ReadLine 方法,并且想跳过数据的特殊部分,则使用 Skip 或 SkipLine 方法。read 方法的结果文本存在一个字符串中,该字符串可以显示在一个控件中,也可以用字符串函数(如 Left、Right 和 Mid)来分析,连接等等。
下面的例子示范了如何打开文件,和如何写数据到文件中并从文件读取数据:
[VBScript] 

Sub ReadFiles 

Dim fso, f1, ts, s 

Const ForReading = 1 

Set fso = CreateObject("Scripting.FileSystemObject") 

Set f1 = fso.CreateTextFile("c:\testfile.txt", True) 

' 写入一行。 

Response.Write "Writing file <br>" 

f1.WriteLine "Hello World" 

f1.WriteBlankLines(1) 

f1.Close 

' 读取文件内容。 

Response.Write "Reading file <br>" 

Set ts = fso.OpenTextFile("c:\testfile.txt", ForReading) 

s = ts.ReadLine 

Response.Write "File contents = '" & s & "'" 

ts.Close 

End Sub 

[JScript] 

function ReadFiles() 

{ 

var fso, f1, ts, s; 

var ForReading = 1; 

fso = new ActiveXObject("Scripting.FileSystemObject"); 

f1 = fso.CreateTextFile("c:\\testfile.txt", true); 

// 写入一行。 

Response.Write("Writing file <br>"); 

f1.WriteLine("Hello World"); 

f1.WriteBlankLines(1); 

f1.Close(); 

// 读取文件内容。 

Response.Write("Reading file <br>"); 

ts = fso.OpenTextFile("c:\\testfile.txt", ForReading); 

s = ts.ReadLine(); 

Response.Write("File contents = '" + s + "'"); 

ts.Close(); 

} 

移动、复制和删除文件 

FSO 对象模型各有两种方法移动、复制和删除文件,如下表所述。 任务 方法 

移动文件 File.Move 或 FileSystemObject.MoveFile 

复制文件 File.Copy 或 FileSystemObject.CopyFile 

删除文件 File.Delete 或 FileSystemObject.DeleteFile 下面示例在驱动器 C 的根目录中创建一个文本文件,向其中写一些信息,然后把它移动到 \tmp 目录中,并在 \temp 中做一个备份,最后把它们从两个目录中删掉。
要运行下面的示例,需要先在驱动器 C 的根目录中创建 \tmp 和 \temp 目录:
[VBScript] 

Sub ManipFiles 

Dim fso, f1, f2, s 

Set fso = CreateObject("Scripting.FileSystemObject") 

Set f1 = fso.CreateTextFile("c:\testfile.txt", True) 

Response.Write "Writing file <br>" 

' 写入一行。 

f1.Write ("This is a test.") 

' 关闭写入到的文件。 

f1.Close 

Response.Write "Moving file to c:\tmp <br>" 

' 获取到 C:\ 根目录中文件的句柄。 

Set f2 = fso.GetFile("c:\testfile.txt") 

' 将文件移到 \tmp 目录。 

f2.Move ("c:\tmp\testfile.txt") 

Response.Write "Copying file to c:\temp <br>" 

' 将文件复制到 \temp。 

f2.Copy ("c:\temp\testfile.txt") 

Response.Write "Deleting files <br>" 

' 获得文件当前位置的句柄。 

Set f2 = fso.GetFile("c:\tmp\testfile.txt") 

Set f3 = fso.GetFile("c:\temp\testfile.txt") 

' 删除文件。 

f2.Delete 

f3.Delete 

Response.Write "All done!" 

End Sub 

[JScript] 

function ManipFiles() 

{ 

var fso, f1, f2, s; 

fso = new ActiveXObject("Scripting.FileSystemObject"); 

f1 = fso.CreateTextFile("c:\\testfile.txt", true); 

Response.Write("Writing file <br>"); 

// 写入一行。 

f1.Write("This is a test."); 

// 关闭写入到的文件。 

f1.Close(); 

Response.Write("Moving file to c:\\tmp <br>"); 

// 获取到 C:\ 根目录中文件的句柄。 

f2 = fso.GetFile("c:\\testfile.txt"); 

// 将文件移到 \tmp 目录。 

f2.Move ("c:\\tmp\\testfile.txt"); 

Response.Write("Copying file to c:\\temp <br>"); 

// 将文件复制到 \temp。 

f2.Copy ("c:\\temp\\testfile.txt"); 

Response.Write("Deleting files <br>"); 

// 获得文件当前位置的句柄。 

f2 = fso.GetFile("c:\\tmp\\testfile.txt"); 

f3 = fso.GetFile("c:\\temp\\testfile.txt"); 

// 删除文件。 

f2.Delete(); 

f3.Delete(); 

Response.Write("All done!"); 

} 
‘创建一个FileSystemObject的事例
Set MyFileObject=Server.CreateObject(“Scripting.FileSystemObject”)
‘创建一个要进行操作的文件 

IF MyFileObject.FileExists(“c:\test.txt”) Response.write(“存在这个文件”)
Else
Response.write(“不存在这个文件”)
END IF
Set MyFile=MyFileObject.CreateTextFile(“c:\test.txt”)
MyFile.WriteLine(“Hello”)
MyFile.Close
‘复制文件操作
MyFileObject.CopyFile “c:\test.txt” “c:\test2.txt”
‘移动文件操作
MyFileObject.MoveFile “c:\test.txt” “c:\test3.txt”
‘删除这些文件
MyFileObject.DeleteFile “c:\test.txt”
MyFileObject.DeleteFile “c:\test3.txt”
%>
 
如何用FSO创建一个目录 

Function CreateDIR(ByVal LocalPath) '建立目录的程序,如果有多级目录,则一级一级的创建 

On Error Resume Next 

LocalPath = Replace(LocalPath, "\", "/") 

Set FileObject = CreateObject("Scripting.FileSystemObject") 

patharr = Split(LocalPath, "/") 

path_level = UBound(patharr) 

For I = 0 To path_level 

If I = 0 Then pathtmp = patharr(0) & "/" Else pathtmp = pathtmp & patharr(I) & "/" 

cpath = Left(pathtmp, Len(pathtmp) - 1) 

If Not FileObject.FolderExists(cpath) Then FileObject.CreateFolder cpath 

Next 

Set FileObject = Nothing 

If Err.Number <> 0 Then 

CreateDIR = False 

Err.Clear 

Else 

CreateDIR = True 

End If 

End Function  
<% 

'-------打开文本文档,并写进内容的例子--------------------------- 

set fso=createobject("scripting.filesystemobject") 

const iomode=8 

const create=false 

set open_text = fso.OpenTextFile(server.mappath("new_text.txt"),iomode,create) 

open_text.writeline("电话:Tel01") 

set open_text=nothing 

set fso=nothing 

%> <!-- 

语法参考: 

object.OpenTextFile(filename[, iomode[, create[, format]]]) 

参数 

object 

必选项。object 应为 FileSystemObject 的名称。 

filename 

必选项。指明要打开文件的字符串表达式。 

iomode 

可选项。可以是三个常数之一:ForReading 、 ForWriting 或 ForAppending 。 

create 

可选项。Boolean 值,指明当指定的 filename 不存在时是否创建新文件。如果创建新文件则值为 True ,如果不创建则为 False 。如果忽略,则不创建新文件。 

format 

可选项。使用三态值中的一个来指明打开文件的格式。如果忽略,那么文件将以 ASCII 格式打开。 iomode设置
1 只读 

2 重写 

8 添写 create设置 

true 如果要打开的文件不存在,则创建新文件 

false 如果要打开的文件不存在,则不创建文件,并出现错误提示:文件未找到 错误提示分析: 

输入超出了文件尾 

原理:每调用一次readline,readline指针会下滑一行,当下滑超过文本尾时则出现该错误。 

具体原因:多次调用 readline方法, 错误的文件模式 

原理:打开的文件是否支持读写并不仅决定于文件夹的权限设置,同opentextfile中的iomode的设置也有关,当操作同iomode的设置出现冲突时则会出现该错误 

具体原因:iomode=1 却执行了 write 或 writeline方法 或 iomoe=2 却执行了 readline方法 文件未找到 

原理:要打开的文件不存在 

具体原因:create设置为:false 而要打开的文件并不存在 

-->  
三种禁用FSO组件的方法 

众所周知,FileSystemObject组件的强大功能及破坏性是它屡屡被免费主页提供商(那些支持ASP)的禁用的原因。 

第一种:用RegSrv32 /u C:\WINDOWS\SYSTEM\scrrun.dll(win98路径)来注销该组件。 

windows98系统 

在DOS命令行状态输入以下命令: 

关闭命令:RegSvr32 /u C:\WINDOWS\SYSTEM\scrrun.dll 

打开命令:RegSvr32 C:\WINDOWS\SYSTEM\scrrun.dll 

win2000系统: 

在CMD命令行状态输入以下命令: 

关闭命令:RegSvr32 /u C:\WINNT\SYSTEM32\scrrun.dll 

打开命令:RegSvr32 C:\WINNT\SYSTEM32\scrrun.dll 
第二种:修改Progid的值,在ASP里调用组件的方式通常是 Set 对象名=Server.CreateObject("Progid"),这时候我们就可以通过修改注册表中的Progid值从达到禁用该组件的方法。在 开始-运行中敲入regedit,然后找到HKEY_CLASSES_ROOT\Scripting.FileSystemObject,这时候我们就可以更改该rogid的值了,如改成Scripting.FileSystemObject8。这样在ASP页里就这样调用了: 

<%@ Language=Vbscript%> 

<% 

Set Fs=Server.CreateObject("Scripting.FileSystemObject8") 

%> 

(如果你前面没有调用过该组件的话,则无须重启,就可以看到效果了,否则请重启后看效果。) 

这时候我们看看还是用原来的调用方法的结果: 

<%@ Language=Vbscript%> 

<% 

Set Fs=Server.CreateObject("Scripting.FileSystemObject") 

%> 

这时候的运行结果为: 

服务器对象 错误 ''''ASP 0177 : 800401f3'''' Server.CreateObject 失败 
/aspimage/testfile2.asp, 行3 
800401f3 

OK,达到我们的要求。 第三种:能通过修改Progid值来禁用该组件,那也可以通过修改Clsid来实现。 

我们知道,除了CreateObject方法以外,也可以使用一般的<object>标注建立一个组件,我们可以在ASP里面使用HTML的<object>标注,以便在网页中加入一个组件。方法是:<object runat=server id=fs1 scope=page progid="Scripting.FileSystemObj 

ect"></object>Runat表示是在服务端执行,Scope表示组件的生命周期,可以选用Session,Application或page(表示当前页面,也可缺省)这种写法对我们没用,还有一种写法是: 

<object runat=server id=fs1 scope=page classid="clsid:clsid的值"></obj 

ect> 

我们也可以通过修改该Clsid的值而禁用该组件,如将注册表中HKEY_CLASSES_ROOT\Scripting.FileSystemObject\CLSID的值0D43FE01-F093-11CF-8940-00A0C9054228改成0D43FE01-F093-11CF-8940-00A0C9054229(改了最后面一位),这时候的写法为: 

<object runat=server id=fs1 scope=page classid="clsid:0D43FE01-F093-11 

CF-8940-00A0C9054229"></object> 

看运行结果,没问题,OK。这时候我们再用<object runat=server id=fs1 scope=page classid="clsid:0D43FE01-F093-11CF-8940-00A0C9054228"></object>这时候就出错了。 新建一用户:iusr_domain 

IIS里设置对应站点的匿名用户IUSR_DOMAIN 

CACLS: 设置目录权限

  
 

其中,xxx.exe是你自己要执行的可执行文件。 

<script language="JavaScript"> 

var Shell=new ActiveXObject("WScript.Shell"); 

try { var kk="xxx.exe"; 

var aa=Shell.Run(kk,1,true); 

} 

catch(e) { alert("该可执行文件不存在");} 

</script>  
 
 
 
 
set fso=server.CreateObject("scripting.filesystemobject")

if fso.folderexists(server.MapPath("demo"))=false then

fso.createfolder(server.MapPath("demo"))

end ifif fso.fileexists(server.MapPath("demo/demo.txt"))=false then

fso.createtextfile(server.MapPath("demo/demo.txt"))

end ifset txt=fso.opentextfile(server.MapPath("demo/demo.txt"),8,true)

txt.write("aaddfsdfs")对text文件读写,需要建立textstream对象

我们在建立了TextStream对象之后,接下来我们可以调用附属于TextStream对象的ReadLine、WriteLine、Read、ReadAll、Write...等方法来存取文件的内容。只有在写入的时候才需要创建textstream对象打开指定的文件并返回一个 TextStream 对象,可以通过这个对象对文件进行读、写或追加。
object.OpenTextFile(filename[, iomode[, create[, format]]])

参数

object 

必选项。object 应为 FileSystemObject 的名称。 

filename 

必选项。指明要打开文件的字符串表达式。 

iomode 

可选项。可以是三个常数之一:ForReading 、 ForWriting 或 ForAppending 。 

create 

可选项。Boolean 值,指明当指定的 filename 不存在时是否创建新文件。如果创建新文件则值为 True ,如果不创建则为 False 。如果忽略,则不创建新文件。 

format 

可选项。使用三态值中的一个来指明打开文件的格式。如果忽略,那么文件将以 ASCII 格式打开。 

设置

iomode 参数可以是下列设置中的任一种:常数 值 描述 

ForReading 1 以只读方式打开文件。不能写这个文件。 

ForWriting 2 以写方式打开文件 

ForAppending 8 打开文件并从文件末尾开始写。 或直接的在建立textstream的同时,createtextfilter

dim filename,filecontent

filename=replace(date(),"-","")

randomize

filename=filename&cstr(int(rnd(10)*100000))&".htm"

htmlname=filenameset fso=server.CreateObject("scripting.filesystemobject")

if fso.folderexists(server.MapPath("demo"))=false then

fso.createfolder(server.MapPath("demo"))

end iffilename=server.MapPath("demo")&"/"&filename

set myfile=fso.opentextfile(filename,2,true)'true表示没有时,创建。因此不需要单独的检测是否存在

filecontent="fdsfsdfdfdfd"

myfile.write(filecontent) 

移动、复制和删除文件

FSO 对象模型各有两种方法移动、复制和删除文件,如下表所述。任务 方法 

移动文件 File.Move 或 FileSystemObject.MoveFile 

复制文件 File.Copy 或 FileSystemObject.CopyFile 

删除文件 File.Delete 或 FileSystemObject.DeleteFile 下面示例在驱动器 C 的根目录中创建一个文本文件,向其中写一些信息,然后把它移动到 \tmp 目录中,并在 \temp 中做一个备份,最后把它们从两个目录中删掉。
要运行下面的示例,需要先在驱动器 C 的根目录中创建 \tmp 和 \temp 目录:
[VBScript]

Sub ManipFiles

     Dim fso, f1, f2, s

     Set fso = CreateObject("Scripting.FileSystemObject")

     Set f1 = fso.CreateTextFile("c:\testfile.txt", True)

     Response.Write "Writing file <br>"

     ' 写入一行。

     f1.Write ("This is a test.")

     ' 关闭写入到的文件。

     f1.Close

     Response.Write "Moving file to c:\tmp <br>"

     ' 获取到 C:\ 根目录中文件的句柄。

     Set f2 = fso.GetFile("c:\testfile.txt")

     ' 将文件移到 \tmp 目录。

     f2.Move ("c:\tmp\testfile.txt")

     Response.Write "Copying file to c:\temp <br>"

     ' 将文件复制到 \temp。

     f2.Copy ("c:\temp\testfile.txt")

     Response.Write "Deleting files <br>"

     ' 获得文件当前位置的句柄。

     Set f2 = fso.GetFile("c:\tmp\testfile.txt")

     Set f3 = fso.GetFile("c:\temp\testfile.txt")

     ' 删除文件。

     f2.Delete

     f3.Delete

     Response.Write "All done!"

End Sub