3

有没有我可以使用的函数将不可靠的文件名转换为好的文件名?

我正在处理大量照片,并且偶尔,我的脚本会停止,因为上传者在文件名中放置了一个卷曲符号 (~)。我现在也想知道是否还有其他不能在文件名中的坏符号以及如何转义它们。

我正在使用 VBScript 的 FileSystem 对象遍历这些文件,类似于以下内容:

For Each File In Files
    If InStr(UCase(File.Name), ".JPG") > 0 Then
        '// do stuff
    End If
Next
4

1 回答 1

6

您可以创建一个返回“已清理”文件名的函数,例如:

function MakeNormal(filename)
    dim re : Set re = new regexp

    re.Pattern = "[^\w :\\\.]"
    re.Global = True

    MakeNormal = re.Replace(filename, "_")

end function

msgbox MakeNormal("C:\Temp\normal filename.txt")
msgbox MakeNormal("C:\Temp\special ~!@#$%^&*() filename.txt")

' returns: "C:\Temp\normal filename.txt" and "C:\Temp\special __________ filename.txt"

并将文件名替换为已清理的文件名。当您有两个仅在特殊字符上唯一的文件时变得有风险。

以上是“白名单”变体,如果您更喜欢“黑名单”版本,可以将模式替换为类似[~!@#$%^&()]

于 2012-08-02T13:41:11.403 回答