質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.53%
VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

Q&A

解決済

1回答

2124閲覧

一部の記号や特殊文字を含んだファイルが認識できない

TAHA

総合スコア16

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

0グッド

1クリップ

投稿2018/05/17 06:44

お世話になっております。

重複ファイルを整理するVBプログラムを組みました。

一部のファイルは、記号やハングル文字が含まれ、「パスが見つかりません。」というエラーが返ります。

手動だとコピペできるので、プログラムでもどうにかできないかと考えています。

アドバイスを宜しくお願いいたします。

VBScript

1 2'変数を明示的に宣言するよう強制する宣言 3Option Explicit 4 5'変数の宣言 6Dim WSH,sc,o_dir,d_dir,objFso 7 8'オブジェクトをインスタント化 9Set WSH=CreateObject("WScript.Shell") 10Set objFso = CreateObject("Scripting.FileSystemObject") 11 12o_dir = InputBox("コピー元(削除対象)のファイル名を入力してください") 13d_dir = InputBox("コピー先のファイル名を入力してください") 14 15'ファイルのコピー 16objFso.CopyFile o_dir, d_dir 17 18'ショートカットの作成 19Set sc = WSH.CreateShortcut(o_dir & ".lnk") 20sc.TargetPath = d_dir 21sc.save 22 23'ショートカット存在のチェックおよびファイルの削除 24If objFso.FileExists(sc) Then 25 objFso.DeleteFile o_dir 26Else 27 Msgbox "ショートカットが作成されていません" 28 29End if 30 31'オブジェクト開放 32Set sc = Nothing 33Set WSH = nothing 34Set objFso = nothing 35

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2018/05/17 06:47

そのエラーが返るという実際のファイル名を提示してください
guest

回答1

0

ベストアンサー

適当に拾ってきたハングル文字でファイルを作成してテストしてみたところ、CreateShortcutで引っかかるようですね。
SJISしか受け付けないような気がします(全然調べていませんが…)
とりあえず適当な名前でショートカットを作成した後、リネームすれば問題なく実行できましたので参考にしてください。

VBScript

1'変数を明示的に宣言するよう強制する宣言 2Option Explicit 3 4'変数の宣言 5Dim WSH,sc,o_dir,d_dir,objFso 6 7'オブジェクトをインスタント化 8Set WSH=CreateObject("WScript.Shell") 9Set objFso = CreateObject("Scripting.FileSystemObject") 10 11o_dir = InputBox("コピー元(削除対象)のファイル名を入力してください") 12d_dir = InputBox("コピー先のファイル名を入力してください") 13 14'ファイルのコピー 15objFso.CopyFile o_dir, d_dir 16 17'適当な名前でショートカットの作成 18'Set sc = WSH.CreateShortcut(o_dir & ".lnk") 19Set sc = WSH.CreateShortcut(".\_shortcuttemp_.lnk") 20sc.TargetPath = d_dir 21sc.save 22 23'ショートカット存在のチェックおよびファイルの削除 24If objFso.FileExists(sc) Then 25 objFso.DeleteFile o_dir 26 'ショートカットファイル名を正規の名前に変更する 27 objFso.MoveFile sc, o_dir & ".lnk" 28Else 29 Msgbox "ショートカットが作成されていません" 30 31End if 32 33'オブジェクト開放 34Set sc = Nothing 35Set WSH = nothing 36Set objFso = nothing 37

投稿2018/05/17 07:27

ttyp03

総合スコア16996

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TAHA

2018/05/18 10:17

ありがとうございます。実際のファイルでテストしてみて、またフィードバックしますね。
TAHA

2018/05/24 10:22

成功です。ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.53%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問