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"

そして、ファイルの名前をきれいなものに置き換えます。特殊文字のみが一意である 2 つのファイルがある場合、危険になります。

上記は「ホワイトリスト」バリアントです。「ブラックリスト」バージョンを好む場合は、パターンを次のように置き換えることができます[~!@#$%^&()]

于 2012-08-02T13:41:11.403 に答える