123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- <%
- Class PathFormatter
- Public Function Format( ByVal pathFormat, ByVal filename )
- Dim ext, name
- If IsEmpty( format ) Then
- format = "{yyyy}{mm}{dd}{hh}{ii}{ss}{rand:6}"
- End If
- Set invalidPattern = new RegExp
- invalidPattern.Pattern = "[\\\/\:\*\?\<\>\|""]"
- invalidPattern.Global = true
- filename = invalidPattern.Replace( filename, "" )
- ext = GetExt( filename )
- name = GetNameWithoutExt( filename )
- pathFormat = Replace( pathFormat, "{filename}", name )
- pathFormat = Replace( pathFormat, "{time}", TimeStamp() )
- pathFormat = Replace( pathFormat, "{yyyy}", Year(Now) )
- pathFormat = Replace( pathFormat, "{yy}", Year(Now) Mod 100 )
- pathFormat = Replace( pathFormat, "{mm}", LeadZero( Month(Now) ) )
- pathFormat = Replace( pathFormat, "{dd}", LeadZero( Day(Now) ) )
- pathFormat = Replace( pathFormat, "{hh}", LeadZero( Hour(Now) ) )
- pathFormat = Replace( pathFormat, "{ii}", LeadZero( Minute(Now) ) )
- pathFormat = Replace( pathFormat, "{ss}", LeadZero( Second(Now) ) )
- Set randPattern = new RegExp
- randPattern.Pattern = "{rand(\:?)(\d+)}"
- Set matches = randPattern.Execute(pathFormat)
- If matches.Count Then
- Set match = matches(0)
- digit = 6
- If match.SubMatches.Count > 1 Then
- digit = 0 + match.SubMatches(1)
- End If
- min = 1
- Do While digit > 0
- min = min * 10
- digit = digit - 1
- Loop
- max = min * 10
- pathFormat = randPattern.Replace( pathFormat, Rand( min, max ) )
- End If
- Format = pathFormat + ext
- End Function
-
- Private Function GetExt( file )
- GetExt = Right( file, Len(file) - InStrRev(file, ".") + 1 )
- End Function
- Private Function GetNameWithoutExt( file )
- GetNameWithoutExt = Left( file, InStrRev(file, ".") - 1 )
- End Function
- Private Function TimeStamp()
- TimeStamp = DateDiff("s", "1970-1-1 8:00:00", Now())
- End Function
- Private Function Rand( min, max )
- Randomize
- Rand = Int( (max - min + 1) * Rnd + min )
- End Function
- Private Function GetFormatedDate()
- Dim yyyy, mm, dd
- yyyy = Year(Date)
- mm = LeadZero(Month(Date))
- dd = LeadZero(Day(Date))
- GetFormatedDate = yyyy & mm & dd
- End Function
- Private Function LeadZero( number )
- If number < 10 Then
- LeadZero = "0" & number
- Else
- LeadZero = number
- End If
- End Function
- End Class
- %>
|