前提・実現したいこと
前任者が作成したVBSを書き換えて、
リモートデスクトップ接続先のDドライブ配下のファイルを
クライアント側Cドライブにコピーするスクリプトを書いています。
ツールの動作は以下の通りです。
0. クライアント側で必要なファイルの日付と時間を決定
0. クライアントからホストにリモートデスクトップ接続
0. ホスト側で該当日付と時間のフォルダ「yyyymmdd_HHMM」をD:\tempに格納
0. ホスト側からクライアント側に3.をフォルダごとコピー
該当ソースコードを実行するのはホスト(リモートデスクトップ接続)からです。
発生している問題・エラーメッセージ
エラー処理部分(下記ソースコード★部分と思っています)で
「オブジェクトがありません」
と表示されます。
該当のソースコード
※ツール動作4.に当たる部分のみ抜粋しています。
vbs
1Option Explicit 2 3 Dim objFSO ''FileSystemObject 4 Dim sFolderPathHostResult ''ホスト側フォルダパス(結果用) 5 Dim sFolderPathClientResult ''クライアント側フォルダパス(結果用) 6 Dim sNowFolderName ''フォルダ名のyyyymmdd_HHMM 部分 7 8''エラー設定 9On Error Resume Next 10 11 ''初期設定 12 sFolderPathHostResult = "D:\temp\" 13 sFolderPathClientResult = "\tsclient\C\ツール\データ取得ツール\取得フォルダ\" 14 15 ''yyyymmdd_HHMM の文字列生成 16 sNowFolderName = Replace(FormatDateTime(Now,2),"/","") & "_" & Replace(FormatDateTime(Now,4),":","") 17 18 ''フォルダパスと現在日時をマージ フォルダパス … D:\temp\yyyymmdd_HHMM 19 sFolderPathHostResult = sFolderPathHostResult & sNowFolderName 20 21 Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") 22 23 If Err.Number = 0 Then 24 ''フォルダの存在チェック(コピー元) 25 If objFSO.FolderExists(sFolderPathHostResult) <> True Then 26 ''ファイルが存在しないので処理終了 27 WScript.Echo "設定ファイル「" & sFolderPathHostResult & "」が存在致しません。" & Err.Description 28 End If 29 End If 30 31 ''フォルダコピー開始 32 If Err.Number = 0 Then 33 ''ファイルコピー 34 objFSO.CopyFolder sFolderPathHostResult, sFolderPathClientResult, True 35 36 If Err.Number = 0 Then 37 Else 38 WScript.Echo "エラー: " & Err.Description 39 End If 40 Else 41 ''★ ここでエラーが出ていると思われる。 42 WScript.Echo "エラー: " & Err.Description 43 End If 44 45 ''オブジェクトの開放 46 Set objFile = Nothing 47 Set objFSO = Nothing 48 49 ''WindowsOSログオフ処理(リモートデスクトップ終了) 50 Call subLogOffWindowsOS 51 52 ''完了メッセージ 53 MsgBox "処理が完了致しました。", 0, sMessageTitle 54 55 ''処理終了 56 WScript.Quit 57 58 59'WindowsOSログオフ処理(コマンドライン) 60Sub subLogOffWindowsOS() 61 Dim WshShell ''WshShell オブジェクト 62 Dim objExec ''Tera Term起動用 63 Dim sAppName ''コマンドライン 64 65 ''コマンドラインを作成 66 sAppName = "logoff" 67 68 ''コマンドライン実行 69 Set objExec = WshShell.Exec(sAppName) 70 71End Sub
試したこと
該当ソースコード部分で前任者の書いたコードから書き換えたのはこの部分です。
ホスト側D:\temp配下に生成されるフォルダ名を"yyyymmdd_HHMM"とするように
したためです。
''yyyymmdd_HHMM の文字列生成 sNowFolderName = Replace(FormatDateTime(Now,2),"/","") & "_" & Replace(FormatDateTime(Now,4),":","") ''フォルダパスと現在日時をマージ フォルダパス … D:\temp\yyyymmdd_HHMM sFolderPathHostResult = sFolderPathHostResult & sNowFolderName
以前は下記のようになっていて、その際は問題なく動作していました。
sFolderPathHostResult = sFolderPathHostResult & Replace(Date, "/", "")
あなたの回答
tips
プレビュー