从目录列表中重命名一个文件(Rename single file from list in Dire

2019-08-17 10:11发布

请原谅我的无知编程。 这就是为什么你天才的存在!

我想通过附表任务可以重命名一个文件每30分钟一班。

文件列表:

test1.txt的的test2.txt test3.txt等..

成:test.txt的的test2.txt text3.txt等..

test.txt的将通过程序来删除。 因此,在30分钟的时间,我想的test2.txt重命名为test.txt的,以此类推,直到所有的文件都已经被处理。

感谢您的帮助。 发现重命名不同的文件到一个文件名,一次一个 ,但它仅复制文件。

Answer 1:

您可以检查是否具有给定基本名称文件是否存在以及以其他方式重命名附加到基名编号最小的文件。 尝试是这样的:

Const basename  = "test"
Const srcFolder = "..."
Const extension = "txt"

Set fso = CreateObject("Scripting.FileSystemObject")

dstFile = fso.BuildPath(srcFolder, basename & "." & extension)

If fso.FileExists(dstFile) Then WScript.Quit 0  'nothing to do

For Each f In fso.GetFolder(srcFolder).Files
  If LCase(fso.GetExtensionName(f.Name)) = extension Then
    If LCase(Left(f.Name, Len(basename))) = basename Then
      num = Mid(fso.GetBaseName(f.Name), Len(basename)+1)
      If Len(num) > 0 Then
        num = CInt(num)
        If IsEmpty(minnum) Or minnum > num Then minnum = num
      End If
    End If
  End If
Next

If Not IsEmpty(minnum) Then
  srcFile = fso.BuildPath(srcFolder, basename & minnum & "." & extension)
  fso.MoveFile srcFile, dstFile
End If

文件名和数量的检查可以通过对正则表达式测试被简化了一点:

Set re = New RegExp
re.Pattern    = "^" & basename & "(\d+)\." & extension & "$"
re.IgnoreCase = True

For Each f In fso.GetFolder(srcFolder).Files
  Set m = re.Execute(f.Name)
  If m.Count > 0 Then
    num = CInt(m(0).SubMatches(0))
    If IsEmpty(minnum) Or minnum > num Then minnum = num
  End If
Next


文章来源: Rename single file from list in Directory