4

Unicode の名前付きフォルダーで問題に直面しています。フォルダーをスクリプトにドラッグすると、フォルダーのパスが正しく表示されません。

簡単な VBScript (これはほんの一部です):

Dim Wshso : Set Wshso = WScript.CreateObject("WScript.Shell")
Dim FSO : Set FSO = CreateObject("Scripting.FileSystemObject")

If WScript.Arguments.Count = 1 Then
    If FSO.FileExists(Wscript.Arguments.Item(0)) = true and FSO.FolderExists(Wscript.Arguments.Item(0)) = false Then
        Alert "You dragged a file, not a folder! My god." & vbcrlf & "Script will terminate immediately", 0, "Alert: User is stupid", 48
        WScript.Quit
    Else
        targetDir = WScript.Arguments.Item(0)
        Wshso.Popup targetDir
    End If
Else
    targetDir = Wshso.SpecialFolders("Desktop")
    Alert "Note: No folder to traverse detected, default set to:" & vbcrlf & Wshso.SpecialFolders("Desktop"), 0, "Alert", 48
End If

Unicode文字を含まない通常のパスであれば問題ありません。しかし、この場合: ディレクトリ:4minute (포미닛) - Hit Your Heart

次に、次のようなものが表示されます4minute (?) - Hit Your Heart

FolderExists を実行すると、ドラッグされたフォルダーが見つかりません。

Unicode の名前付きフォルダーをサポートするための回避策はありますか?

ありがとう!

これが十分に明確でない場合は編集します

4

4 に答える 4

4
于 2010-12-06T13:34:49.033 に答える
2

Google からここにたどり着いた人は...

Bobince のヒントに従って、vbscript ファイル (myscript.vbs) を dos バッチ ファイル (mybatch.bat) にラップすることで、この問題を回避することができました。

ヒントは次のとおりです。

「Windows Script Host の DropHandler シェル拡張機能に特有の問題のようですが、.exe、.bat などに使用されるものは、この問題には悩まされません。」

mybatch.bat には以下が含まれます。

:Loop
IF "%1"=="" GOTO Continue
     set allfiles=%allfiles% "%1"
SHIFT
GOTO Loop
:Continue
"myscript.vbs" %allfiles%

私の myscript.vbs からのこのコードも役立つかもしれません

For Each strFullFileName In Wscript.Arguments
  ' do stuff
Next
于 2012-11-27T15:46:16.450 に答える