我有以下命名約定的文件。重命名文件而不復制到同一文件夾中
RE12356_GJ123456789.DAT
我需要重命名文件RE12356_GJ123456790.DAT不使用VBS即我需要1遞增,每次當我運行VBS文件複製文件。請幫幫我。謝謝!
我有以下命名約定的文件。重命名文件而不復制到同一文件夾中
RE12356_GJ123456789.DAT
我需要重命名文件RE12356_GJ123456790.DAT不使用VBS即我需要1遞增,每次當我運行VBS文件複製文件。請幫幫我。謝謝!
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
如何複製櫃檯溢出作爲練習。
您可以只使用「移動」命令,它實際上不會改寫文件,但將只是移動在文件表中的條目......這基本上是一個「重命名」
如果你不想使用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"
Ekkehard先指出......如何真正做到你想要的。 – 2013-05-13 17:49:25
你得到E努力... – Reimius 2013-05-13 23:01:29