首页 文章

FileSystemObject - 不支持的文件名字符

提问于
浏览
1

是否有一个我可以使用的功能,可以转换具有良好文件名的狡猾文件名?

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

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

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

1 回答

  • 3

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

    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"
    

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

    以上是'whitelist'变体,如果你更喜欢'blacklist'版本,你可以替换像 [~!@#$%^&()] 这样的模式

相关问题