FileSystemObject - 不支持的文件名字符

时间:2012-08-02 13:19:43

标签: asp-classic vbscript filesystems

是否有一个我可以用来转换具有良好文件名的狡猾文件名的函数?

我正在处理大量照片,偶尔我的脚本会停止,因为上传者在文件名中放了一个卷曲符号(〜)。我现在也想知道是否有任何其他不符合文件名的错误符号以及如何逃避它们。

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

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

1 个答案:

答案 0 :(得分:4)

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

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"

用已清理的文件替换文件名。如果您有两个仅对特殊字符唯一的文件,则会有风险。

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

的模式