尝试使用包含随机数的原始名称标识和重命名文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了尝试使用包含随机数的原始名称标识和重命名文件相关的知识,希望对你有一定的参考价值。

您好我在尝试重命名文件夹中的文件(具有多个类似的文件),但即使使用通配符方法我也很难识别它。原始文件名如下所示:“2018_02_26_20180228_XXXXXX_GDW_Audit_CView_Report.txt”所以我唯一的识别方法是知道部分名称(“_GDW_Audit_CView_Report.txt”),因为多个文件的日期相同。我编写了以下代码,当我尝试运行它时,它会给出Path / File Access错误。任何帮助,将不胜感激。

Option Explicit
Sub HGDW_WKD()

    Dim myDateTemp As String
    Dim myDate1 As String
    Dim myDate2 As String
    Dim HGDW_CV1 As String
    Dim HGDW_CV2 As String

    myDateTemp = Format(Date, "yyyy-mm-dd")
    myDate1 = Replace(myDateTemp, "-", "_")
    myDate2 = Format(Date, "yyyymmdd")

    HGDW_CV1 = myDate1 & "_" & myDate2 & "*_GDW_Audit_CView_Report.txt*"
    HGDW_CV2 = "35999_HR_Global_Data_Warehouse_CView_PROD_" & myDate2 & ".txt"

    Name "C:Usersf91955SourceFldr" & HGDW_CV1 As _ 
    "C:Usersf91955SourceFldr" & HGDW_CV2

End Sub
答案

我不确定这是不是你的意思,但你可以使用带通配符的Dir函数来尝试获取文件名。

所以说我有一个名为的文件

2018_02_28_20180228_XXXXXX_GDW_Audit_CView_Report.txt

我可以检索实际名称,如下所示。第一场比赛。如果没有找到真正的错误处理,则只测试该字符串被赋予的值不是初始化的值。您可以将文件夹路径作为变量传递。

Sub TEST()

    Dim fname As String

    fname = Dir("C:UsersUserDesktopTest*_GDW_Audit_CView_Report.txt")

    If fname <> vbNullString Then

        Debug.Print fname

    End If

End Sub

传递文件夹变量和date1的示例(注意date1 =“2018_02_28”此时):

Sub TEST()

    Dim myDate1 As String

    myDate1 = Format$(Date, "yyyy_mm_dd")

    'Debug.Print myDate1

    Dim fname As String
    Dim folderPath As String

    folderPath = "C:UsersUserDesktopTest"

    fname = Dir(folderPath & Application.PathSeparator & myDate1 & "*_GDW_Audit_CView_Report.txt")

    If fname <> vbNullString Then

        Debug.Print fname

    End If

End Sub

为什么我使用Application.PathSeparator?在尝试添加分隔符之前,您应该真正测试分隔符的存在。在这种情况下,我出于兼容性原因使用它。这将在Mac和Windows上使用正确的分隔符。

有关信息,请参阅:

Excel 2016 Power Programming with VBA (2016) Part IV. Developing Excel Applications , Chapter 21. Understanding Compatibility Issues

引用:

如果您的代码处理路径和文件名,则需要使用适当的路径分隔符构建路径(Mac的冒号,Windows的反斜杠)。更好的方法是避免对路径分隔符进行硬编码并使用VBA来确定它。以下语句将路径分隔符分配给名为PathSep的变量:

PathSep = Application.PathSeparator

参考:

http://www.excelfunctions.net/vba-dir-function.html

以上是关于尝试使用包含随机数的原始名称标识和重命名文件的主要内容,如果未能解决你的问题,请参考以下文章

管道字符串与变量中的文件夹到 findstr - 复制和重命名文件

如何根据子文件夹复制文件和重命名

如何在 Android Studio 3.4 中复制和重命名项目?

如何使用 -exec 查找和重命名所有文件

使用批处理解压缩和重命名文件 (Windows)

如何在 PowerShell 中使用条件语句重命名文件