プロが教える店舗&オフィスのセキュリティ対策術

VBSでフォルダの操作を行っています。
フォルダ名にUnicodeが含まれる場合エラーが発生します。
なんとか文字列を表示する事が出来ますでしょうか?


【文字化けサンプル.vbs】
----------------------
REM Unicode(U+2776)
str = "❶"

REM 表示
msgbox str
----------------------

よろしくお願いします。

A 回答 (2件)

Windows 7 しか手元にないので限定されてしまうかもしれませんが、


質問文にあるコードではエラーが出ず、正しく出力されました。

実際に黒背景に白抜きの 1 や、はしご高の高田などのフォルダーを作ってみましたが問題なくフォルダー名を出力できました。

実行環境は整理できていますか?
    • good
    • 0

> 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
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!