【问题标题】:VBScript date formatting [duplicate]VBScript日期格式[重复]
【发布时间】:2017-10-30 16:41:43
【问题描述】:

以下是一个 VBScript (.vbs),它处理放置在其上的所有 MS Outlook .msg 文件,在 MS Outlook 中打开每个 .msg 以检索所需信息,然后将文件重命名为 ReceivedTime + Subject + SenderName。例如,27102017 123241 AM - 会议议程 - George.msg

我很难将日期格式从 DDMMYYYY 更改为 YYYYMMDD。我已将 varNewFileName = ReplaceIllegalCharacters(olkMessage.ReceivedTime... 替换为 varNewFileName = ReplaceIllegalCharacters(Format(olkMessage.ReceivedTime, "yyyymmdd-hhnnss")... 但是当我运行脚本时,返回的新文件名没有日期和时间. 例如, - 会议议程 - George.msg

如果有人可以帮助我设置日期格式,我将不胜感激。

乔治

On Error Resume Next

Dim olkApp, olkMessage, objFSO, objFile, varFile, varNewFileName
Set olkApp = GetObject(,"Outlook.Application")
If TypeName(olkApp) = "Nothing" Then
    Set olkApp = CreateObject("Outlook.Application")
End If
Set objFSO = CreateObject("Scripting.FileSystemObject")
For Each varFile In WScript.Arguments
    Set olkMessage = olkApp.CreateItemFromTemplate(varFile)
    varNewFileName = ReplaceIllegalCharacters(olkMessage.ReceivedTime & " " & olkMessage.Subject & " From " & olkMessage.SenderName & " To " & olkMessage.To) & ".msg"
    Set objFile = objFSO.GetFile(varFile)
    objFile.Name = varNewFileName
Next
Set objFile = Nothing
Set objFSO = Nothing
Set olkMessage = Nothing
Set olkApp = Nothing
WScript.Quit

Function ReplaceIllegalCharacters(strSubject)
    Dim strBuffer
    strBuffer = Replace(strSubject, ":", "")
    strBuffer = Replace(strBuffer, "\", "")
    strBuffer = Replace(strBuffer, "/", "")
    strBuffer = Replace(strBuffer, "?", "")
    strBuffer = Replace(strBuffer, Chr(34), "'")
    strBuffer = Replace(strBuffer, "|", "")
    ReplaceIllegalCharacters = strBuffer
End Function

【问题讨论】:

    标签: date vbscript outlook formatting


    【解决方案1】:

    试试这个:

    Set olkMessage = olkApp.CreateItemFromTemplate(varFile)
    tempArray = split(olkMessage.ReceivedTime), " ") 
    tempArray(0) = Year(tempArray(0)) & Right("0" & Month(tempArray(0)),2) & Right("0" & Day(tempArray(0)),2)
    myDateTime = join(tempArray, " ") 
    varNewFileName = ReplaceIllegalCharacters(myDateTime & " " & olkMessage.Subject & " From " & olkMessage.SenderName & " To " & olkMessage.To) & ".msg" Set objFile = objFSO.GetFile(varFile)
    

    所以我在这里所做的是获取消息的接收日期/时间的值,并将其拆分为字符串空间上的一个数组,从而在结果数组中给出一个日期元素和一个时间元素。

    重新排列日期部分中的值,然后将数组重新连接在一起,并将此值而不是对象的日期时间属性传递给函数。

    应该做你需要的。如果我在使用我的手机时出现任何拼写错误,敬请见谅...

    如果您需要任何澄清,请告诉我。

    【讨论】:

      【解决方案2】:

      感谢一百万戴夫,您的回复为我指明了正确的方向!在做了一些阅读之后,我意识到 VBScript 使用了不同的 FormatDateTime(date,format) 语法,这就是为什么我无法将日期格式化为 yyyymmdd 的原因。我的更新代码如下:

      For Each varFile In WScript.Arguments   
          Set olkMessage = olkApp.CreateItemFromTemplate(varFile)
          strReceived = year(olkMessage.ReceivedTime) & _
                  right("0" & month(olkMessage.ReceivedTime), 2) & _
                  right("0" & day(olkMessage.ReceivedTime), 2) & " " & _
                  right("0" & hour(olkMessage.ReceivedTime), 2) & _
                  right("0" & minute(olkMessage.ReceivedTime), 2) & _
                  right("0" & second(olkMessage.ReceivedTime), 2)
          varNewFileName = ReplaceIllegalCharacters(strReceived & " " & olkMessage.Subject & " From " & olkMessage.SenderName & " To " & olkMessage.To) & ".msg"
          Set objFile = objFSO.GetFile(varFile)
          objFile.Name = varNewFileName   
      Next
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-03
        相关资源
        最近更新 更多