2013-05-13 160 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

相關問題