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

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

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

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

Q&A

0回答

1625閲覧

[VBS]リモートデスクトップ接続したホストの特定ファイルをクライアントにコピーしたい

wakab

総合スコア10

VBScript

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

0グッド

0クリップ

投稿2018/12/05 02:18

編集2018/12/05 02:37

前提・実現したいこと

前任者が作成した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, "/", "")

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問