• ベストアンサー

[VBS] Unicodeの文字化けを防ぎたい

VBSでフォルダの操作を行っています。 フォルダ名にUnicodeが含まれる場合エラーが発生します。 なんとか文字列を表示する事が出来ますでしょうか? 【文字化けサンプル.vbs】 ---------------------- REM Unicode(U+2776) str = "❶" REM 表示 msgbox str ---------------------- よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.1

> VBSでフォルダの操作を行っています。 > フォルダ名にUnicodeが含まれる場合エラーが発生します。 > なんとか文字列を表示する事が出来ますでしょうか? 得意なジャンルではありませんので、アフターフォローは期待しないでください。 VBS自体をUnicodeで書いてみることで比較的簡単な解決になりませんでしょうか? ファイルの読み書きをするならまた別の工夫が要る場合もあるかも知れませんけれど、、、。 ご質問の問題については、とりあえず手元の環境では解決できました。 テスト準備 新規のフォルダ作成。名前は仮に フォルダP   フォルダPに新規の(サブ)フォルダ作成。名前は ❶     フォルダ❶に新規のテキストファイル作成。(内容は適当)名前は ❶   フォルダPに新規のテキストファイル作成。名前は とりあえずそのまま。     【メモ帳】でこの↑未編集のテキストファイルを開き、     下記のスクリプトをコピペ。     [名前を付けて保存]ダイアログで       [ファイル名]名前は仮に Hoge.txt       [文字コード]をUnicodeに指定して       保存。       【メモ帳】を終了。   フォルダPのスクリプトを記入したテキストファイルHoge.txtの拡張子を.vbsに変更。     以上でUnicodeで書いたvbsファイルができます。 テスト実行   フォルダPHoge.vbsを実行 テスト結果   フォルダ名、ファイル名、共に"❶"の文字は拾えていて、   エラーなく、正しく表示されます。 Option Explicit Rem On Error Resume Next Dim objWshShell ' WshShell Dim objFSO ' FileSystemObject Dim objFolder ' FileSystemObject.Folder Dim oSubFolder ' FileSystemObject.Folder Dim oFile ' FileSystemObject.File Dim sFolderName Dim sSubFolderName Dim sFileName Set objWshShell = WScript.CreateObject("WScript.Shell") sFolderName = objWshShell.CurRentDirectory Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFolder = objFSO.GetFolder(sFolderName) For Each oSubFolder In objFolder.SubFolders sSubFolderName = oSubFolder.Name WScript.Echo "フォルダ名", sFolderName & vblf & _ "サブフォルダ名", sSubFolderName Rem MsgBox sSubFolderName For Each oFile In oSubFolder.Files sFileName = oFile.Name WScript.Echo "ファイル名", sFileName Rem MsgBox sFileName Next Next Set objWshShell = Nothing Set objFolder = Nothing Set objFSO = Nothing

その他の回答 (1)

  • x-1919
  • ベストアンサー率52% (91/173)
回答No.2

Windows 7 しか手元にないので限定されてしまうかもしれませんが、 質問文にあるコードではエラーが出ず、正しく出力されました。 実際に黒背景に白抜きの 1 や、はしご高の高田などのフォルダーを作ってみましたが問題なくフォルダー名を出力できました。 実行環境は整理できていますか?

関連するQ&A