2013-05-13 141 views

回答

4

FileSystemObject的有一个方法.GetFile(FILESPEC),用于返回该文件文件规范的对象。这些对象具有(可写入).Name属性。所以得到.Name,修改它,并写入/分配新的。

给你一些想法(遍历文件夹中的文件,发现文件(县)发生变化,提取递增数):

Option Explicit 

Dim goFS : Set goFS = CreateObject("Scripting.FileSystemObject") 

WScript.Quit demoMain() 

Function demoMain() 
    demoMain = 0 ' assume success 

    Dim sDDir : sDDir  = goFS.GetAbsolutePathName(".\") 
    Dim reVictim : Set reVictim = New RegExp 
    reVictim.IgnoreCase = True 
    reVictim.Pattern = "^(victim)(\d+)(\.txt)$" 
    Dim oFile 
    For Each oFile In goFS.GetFolder(sDDir).Files 
     If reVictim.Test(oFile.Name) Then 
     WScript.Echo "found: ", oFile.Name 
     oFile.Name = reVictim.Replace(oFile.Name, GetRef("FINC")) 
     WScript.Echo "renamed:", oFile.Name 
     End If 
    Next 
End Function ' demoMain 

Function FINC(sM, sG1, sG2, sG3, nP, sS) 
    FINC = sG1 & Right(100 + sG2 + 1, 2) & sG3 
End Function 

输出:

cscript finc.vbs 
found: victim00.txt 
renamed: victim01.txt 

cscript finc.vbs 
found: victim01.txt 
renamed: victim02.txt 

cscript finc.vbs 
found: victim02.txt 
renamed: victim03.txt 

如何复制柜台溢出作为练习。

+0

你得到E努力... – Reimius 2013-05-13 23:01:29

2

您可以只使用“移动”命令,它实际上不会改写文件,但将只是移动在文件表中的条目......这基本上是一个“重命名”

如果你不想使用filesystemobject.move你可以通过发出一个命令行重命名命令:Wsript.shell

像...

Dim objShell 
Set objShell = WScript.CreateObject ("WScript.shell") 
objShell.run "cmd /c rename somefile.txt newname.txt" 
Set objShell = Nothing 

或Ekkehard.Horner指出:

Dim fso, f, s 
    Set fso = CreateObject("Scripting.FileSystemObject") 
    Set f = fso.GetFile(filespec) 
    f.name = "newFileName.txt" 

看到:Name Property (FileSystemObject)

+0

Ekkehard先指出......如何真正做到你想要的。 – 2013-05-13 17:49:25

相关问题