VBScriptでCABファイルを展開する

このQ&Aのポイント
  • VBScriptを使用して、あるディレクトリにあるCABファイルを展開するプログラムを作成しているのですが、CABファイル展開が終了しても、sleepのDo whileを抜けてくれない。
  • VBScriptで作成したCABファイル展開プログラムにおいて、CABファイルの展開が終了しても、Do while文から抜けられない問題が発生しています。
  • VBScriptを使用して、CABファイルを展開するプログラムを作成中ですが、CABファイルの展開が終了しても、Do while文を抜けることができません。
回答を見る
  • ベストアンサー

VBScriptでCABファイルを展開する

お世話になっております。 VBScriptを使用して、あるディレクトリにあるCABファイルを展開するプログラムを作成しているのですが問題がありまして、分かる方いらっしゃいましたらぜひご教授頂きたいです。 ■問題 CABファイルを展開している間はスクリプトをストップさせ、展開が終了したら次のCABファイルを展開しにいくと言うプログラムですが、CABファイル展開が終了しても、sleepのDo whileを抜けてくれない。 ■以下ソースです↓↓↓ Option Explicit On Error Resume Next Dim objWshShell ' WshShell オブジェクト Dim strHomePath ' ホームパス Dim objFSO ' FileSystemObject Dim strFolder ' フォルダ名 Dim strCab ' CABファイルパス Dim CmdLine ' 実行コマンド Dim objExecCmd ' 実行コマンド情報 strFolder = "" strHomePath = "" strCab = "" レジストリからフォルダパスを取得する処理 If strHomePath <> "" Then Set objFSO = CreateObject("Scripting.FileSystemObject") If Err.Number = 0 Then strFolder = strHomePath ' CABファイルのパス strCab = strFolder & "\CabG.CAB" ' CABファイルの展開コマンド作成 CmdLine = "expand """ & strCab & """ -f:* """ & strFolder & """" 'CABファイルの存在確認 If objFSO.FileExists(strCab) = True Then ' CABファイル展開 objWshShell.Exec(CmdLine) ' 実行コマンド格納 Set objExecCmd = objWshShell.Exec(CmdLine) WScript.Echo "成功:コマンドを格納" & CmdLine & Err.Description ' 実行コマンドが終了するまで待つ Do While objExecCmd.Status = 0 WScript.Sleep(3000)               WScript.Echo "展開中です" & Err.Description Loop WScript.Echo "成功:コマンド終了" & CmdLine & Err.Description '展開したCABファイルを削除する 'objFSO.DeleteFile strCab, True '展開で作成されるOSDファイルを削除する Else WScript.Echo "エラー:" & strCab & "が存在しません" & Err.Description End If 順次同じようなロジックで次のCABファイルを展開する ■↑↑↑↑ DOS画面から起動すると、do while文が永遠に抜けれなくなります。。。 いろいろと調べて試行錯誤しているのですが、なかなか解決に至りません。 ぜひ、よろしくお願い致します。

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

  • ベストアンサー
noname#246547
noname#246547
回答No.2

>原因を探っているうちに、下記の場所が悪さしているみたいなのではずしました。 外さないでください >後、自分でも2行いらないと思ったので、実行コマンド格納のSet objExecCmd = objWshShell.Exec(CmdLine)だけで実行すると、CABファイルの展開が不十分で終わるのです。。 検証してみた結果、expandの標準出力バッファが一杯になって、expandの処理が一時停止していました。 よって、whileの部分で標準出力バッファの中身を読み捨てればいいです。 補足:expand自体に、標準出力を抑制するスイッチがあれば、スイッチを付けるだけで解決したのですけどね。 ○参考ソース Option Explicit On Error Resume Next Dim objWshShell ' WshShell オブジェクト Dim objFSO ' FileSystemObject Dim strFolder ' フォルダ名 Dim strCab ' CABファイルパス Dim CmdLine ' 実行コマンド Dim objExecCmd ' 実行コマンド情報 dim readBuff strFolder = "\temp\test" strCab = "\temp\data2.cab" ' CABファイルの展開コマンド作成 CmdLine = "expand """ & strCab & """ -f:* """ & strFolder & """" Set objWshShell = CreateObject("WScript.Shell") Set objFSO = CreateObject("Scripting.FileSystemObject") 'CABファイルの存在確認 If objFSO.FileExists(strCab) = True Then ' 実行コマンド格納 Set objExecCmd = objWshShell.Exec(CmdLine) WScript.Echo "成功:コマンドを格納" & CmdLine & Err.Description ' 実行コマンドが終了するまで待つ Do While objExecCmd.Status = 0' and objExecCmd.ExitCode = 0 readBuff= objExecCmd.StdOut.Read(5000) 'expandの標準出力を捨てる ' readBuff= objExecCmd.StdOut.ReadAll 'expandの標準出力を捨てる このメソッドでは、expandが終了しないと戻ってこない WScript.Sleep(3000) WScript.Echo "展開中です" & Err.Description Loop WScript.Echo "成功:コマンド終了" & CmdLine & Err.Description '展開したCABファイルを削除する ' 'objFSO.DeleteFile strCab, True Else WScript.Echo "エラー:" & strCab & "が存在しません" & Err.Description End If

shou0995
質問者

お礼

marimari01さん、誠にありがとうございます。 これこそ意図していた動きです!! いろいろ原因探っててobjExecCmd.Statusが永遠に0のままだと思っていたら、バッファがいっぱいになっていたのですね。 参考までにお伺いしたいのですが、なぜバッファがいっぱいになってるって分かったのでしょうか…? (VBScript素人なもので、全く分かりませんでした。。) ホントにありがとうございました。

その他の回答 (2)

noname#246547
noname#246547
回答No.3

stdin,stdout,stderrのバッファは有限です。 サイズは256byteか1024byte位だったと思います そもそも、コンピュータ中で無限はありません。 無限に見えるバッファも、内部で保持しているバッファ以上のデータがきた場合は、バッファのサイズをリサイズしているだけです 。 例:Stringクラス、Listクラス stdin,stdout,stderrはリサイズしません。 理由:通常大きなデータを扱わない。かつ、データの保持期間が短い。 今回のExecからexpand呼び出しでは、 通常CRTに出力したら勝手にクリアされるstdoutが、 どこにも出力されるところが無かった(stdoutがCRTに繋がっていない)ため、 stdout内が満杯になってしまったのが原因です。 なので今回は、stdoutをreadBuffにつなげてあげる事によって stdout内が満杯にならないようにしてあげたわけです expand以外にも、stdoutに大量出力するコマンドは注意する必要があります。 コマンドにsilentモードがあればいいですが。

shou0995
質問者

お礼

なるほど、とても勉強になりました。 バッファと言う存在を、今まで全く気にしたことが無かったのがお恥ずかしい話です。。 ホントにありがとうございました。 これからも、もっとがんばろうと思います。

noname#246547
noname#246547
回答No.1

objWshShellの実体はどこでnewされているの? >' CABファイル展開 >objWshShell.Exec(CmdLine) > >' 実行コマンド格納 >Set objExecCmd = objWshShell.Exec(CmdLine) CABファイルの~ の2行いらないでしょ? 2重実行してないかい?

shou0995
質問者

お礼

ご回答ありがとうございます。 >objWshShellの実体はどこでnewされているの? レジストリからフォルダパスを取得する処理のすぐ上で、Set objWshShell = CreateObject("WScript.Shell")を宣言しております(記載漏れ申し訳ないです。。) 後、自分でも2行いらないと思ったので、実行コマンド格納のSet objExecCmd = objWshShell.Exec(CmdLine)だけで実行すると、CABファイルの展開が不十分で終わるのです。。 (650ファイルのCABですが、33個展開して永久ループに陥ります) ※2行にすると全て展開してくれるのですが。。 説明分かりにくいかもしれませんが、上記の現象で何か思い当たる点などありますでしょうか?

shou0995
質問者

補足

marimari01さんの、おっしゃる通り二重実行されていましたので、 ---------------------------------- ' CABファイル展開 objWshShell.Exec(CmdLine) ----------------------------------- の処理を消しました。 すると、CABファイルの展開が途中で止まります。 原因を探っているうちに、下記の場所が悪さしているみたいなのではずしました。 ------------------------------------ ' 実行コマンドが終了するまで待つ Do While objExecCmd.Status = 0 WScript.Sleep(3000) WScript.Echo "展開中です" & Err.Description Loop -------------------------------------- すると、スクリプトだけはどんどん進み終了しました。 (CABファイルの展開は追いつかず、スクリプトが終わった後も展開し続けています) スクリプトの終了=CABファイルの展開終了 という形には言語の特性上等無理なのでしょうか・・・?

関連するQ&A

  • VBScriptでファイルからgoogle検索

    カレントディレクトリの.txtファイルを1行づつ読み込み、google検索したいのですが、ウィンドウが複数立ち上がってしまい1ウィンドウでタブで表示したいのですが上手くいきません。。と、テキストファイル名もタイトルタグで表示したいです。どなたかご存知でしたらご教授願います。以下、書きかけのソースになります。 ---------------------------------------------------------------------------------- use_ie Sub use_ie() 'Option Explicit 'On Error Resume Next Dim objFSO ' FileSystemObject Dim objFile ' ファイル読み込み用 Dim objWshShell ' WshShell オブジェクト If Err.Number = 0 Then Set objWshShell = WScript.CreateObject("WScript.Shell") Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") If Err.Number = 0 Then For Each FLO In objFSO.GetFolder(objWshShell.CurrentDirectory).Files path = FLO.Path If Right(path, 4) = ".txt" Then Set objFile = objFSO.OpenTextFile(path, 1) Do While objFile.AtEndOfStream <> True Set ie = CreateObject("InternetExplorer.Application") ie.Visible = True 'ie.Navigate "about:blank" 'ie.Document.Write "<title>path</title>" ie.Navigate "http://www.google.co.jp/" ',2048 '新規タブで開く waitIE ie ie.Document.getElementById("q").Value = objFile.ReadLine WScript.Sleep 100 ' 検索ボタンクリック ie.Document.all("btnG").Click waitIE ie strURL = "https://www.google.co.jp/" If ie.LocationURL = strURL Then ie.Quit Set ie = Nothing End If Loop objFile.Close End If Next Else WScript.Echo "ファイルオープンエラー: " & Err.Description End If Else WScript.Echo "エラー: " & Err.Description End If Set objFile = Nothing Set objFSO = Nothing Set objWshShell = Nothing Set ie = Nothing End Sub ' IEがビジー状態の間待ちます Sub waitIE(ie) Do While ie.Busy = True Or ie.readystate <> 4 WScript.Sleep 100 Loop WScript.Sleep 1000 End Sub

  • VBScriptで検索結果をタブ表示したいです。

    カレントディレクトリの.txtファイルを1行づつgoogle検索したいのですが、ウィンドウが複数立ち上がってしまい1ウィンドウでタブで表示したいのですが上手くいきません。。と、テキストファイル名もタイトルタグで表示したいです。どなたかご存知でしたらご教授願います。以下、書きかけのソースになります。 ---------------------------------------------------------------------------------- use_ie Sub use_ie() 'Option Explicit 'On Error Resume Next Dim objFSO ' FileSystemObject Dim objFile ' ファイル読み込み用 Dim objWshShell ' WshShell オブジェクト If Err.Number = 0 Then Set objWshShell = WScript.CreateObject("WScript.Shell") Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") If Err.Number = 0 Then For Each FLO In objFSO.GetFolder(objWshShell.CurrentDirectory).Files path = FLO.Path If Right(path, 4) = ".txt" Then Set objFile = objFSO.OpenTextFile(path, 1) Do While objFile.AtEndOfStream <> True Set ie = CreateObject("InternetExplorer.Application") ie.Visible = True 'ie.Navigate "about:blank" 'ie.Document.Write "<title>path</title>" ie.Navigate "http://www.google.co.jp/" ',2048 '新規タブで開く waitIE ie ie.Document.getElementById("q").Value = objFile.ReadLine WScript.Sleep 100 ' 検索ボタンクリック ie.Document.all("btnG").Click waitIE ie strURL = "https://www.google.co.jp/" If ie.LocationURL = strURL Then ie.Quit Set ie = Nothing End If Loop objFile.Close End If Next Else WScript.Echo "ファイルオープンエラー: " & Err.Description End If Else WScript.Echo "エラー: " & Err.Description End If Set objFile = Nothing Set objFSO = Nothing Set objWshShell = Nothing Set ie = Nothing End Sub ' IEがビジー状態の間待ちます Sub waitIE(ie) Do While ie.Busy = True Or ie.readystate <> 4 WScript.Sleep 100 Loop WScript.Sleep 1000 End Sub

  • VBS

    VBSであるファイルを1行ずつ読み込み、その読み込んだ値を ある別のファイルにリダイレクトしたいのですが、 どのように書けばよいか教えてください。 下記のように、echoでは出すことができるのですが、 ファイルにリダイレクトというのができません。 よろしくお願いします。 ==== sample shell ========================= Option Explicit On Error Resume Next Dim objFSO ' FileSystemObject Dim objFile ' ファイル読み込み用 Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") If Err.Number = 0 Then Set objFile = objFSO.OpenTextFile("d:\dr1.txt") If Err.Number = 0 Then Do While objFile.AtEndOfStream <> True WScript.Echo objFile.ReadLine Loop objFile.Close Else WScript.Echo "ファイルオープンエラー: " & Err.Description End If Else WScript.Echo "エラー: " & Err.Description End If Set objFile = Nothing Set objFSO = Nothing ============================================================

  • VBSでフォルダ、ファイル作成時のエラーコード

    フォルダ、ファイルが存在しないとき、作成するスクリプトをVBSで作成していますが、疑問点があるのでご教示ください。 objFSO.CreateFolder、objFSO.CreateTextFileを実行が、正常に行われた場合、 Err.Numberに0がセットされると思っていましたが、実際は違っていました。 objFSO.CreateFolderでフォルダが作成される場合、Err.Numberに13が返されます。 objFSO.CreateTextFileでファイルが作成される場合、Err.Numberに438が返されます。 このスクリプトを実行後、フォルダ、ファイルが存在しない場合、作成されることも確認しています。 フォルダ作成後、作成されたフォルダに対して、ファイルの作成/データの書き込みのアクセス権を拒否にすると返されるErr.numberに70がセットされることも確認しています。 なぜ、フォルダ、ファイルが作成された場合、0が返されないのかご存知の方がいらっしゃいましたらご教示ください。 また、その情報が記載されている書籍およびサイトがあれば、お教えいただければ、幸いです。 Option Explicit Dim objFSO Dim objFile Const strFolderName = "C:\VBS" Const strFileName = "C:\VBS\test.txt" On Error Resume Next Set objFSO = CreateObject("Scripting.FileSystemObject") If Err.Number = 0 Then WScript.Echo "FSOオブジェクトを作成しました" Else WScript.Echo "FSOオブジェクトを作成できませんでした" WScript.Quit(1) End If If objFSO.FolderExists(strFolderName) Then WScript.Echo "フォルダが見つかりました" Else WScript.Echo "フォルダが見つかりませんでした" If objFSO.CreateFolder(strFolderName) Then If Err.Number = 13 Then WScript.Echo "フォルダを作成しました" Else WScript.Echo "フォルダを作成できませんでした" WScript.Quit(1) End If End If End If If objFSO.FileExists(strFileName) Then WScript.Echo "ファイルが見つかりました" Else Script.Echo "ファイルが見つかりませんでした" If objFSO.CreateTextFile(strFileName) Then If Err.number = 438 Then WScript.Echo "ファイルを作成しました" Else WScript.Echo "ファイルを作成できませんでした" WScript.Quit(1) End If End If End If

  • 続・VBscriptでコマンドラインへ発行したい

    以前書き込みさせていただきましたが携帯とPCを使ったため間違ってしまい複数の質問を立ててしまいました。 大変申し訳ありませんでした。最初に立てた二つの書き込みは閉じしっかりまとめたものをここに書かさせていただきます。大変申し訳ありませんでした。 不快な思いさせてしまったことは重々承知しておりますが教えていただけないでしょうか? ≪継続URL≫ http://oshiete1.goo.ne.jp/qa4301789.html http://oshiete1.goo.ne.jp/qa4299107.html まずやりたい動作(仕様?)を見直します。 1.コマンドプロンプトを立ち上げる 2.ディレクトリを変更するためカレントディレクトリする。(何故かこうしないとダメ・・・環境変数の設定が不可みたい?) 3.コマンドラインツールを立ち上げテキストに記述されたコマンドを発行させる。 4.テキストの数だけ実行をさせる。 Option Explicit On Error Resume Next Dim objWshShell ' WshShell オブジェクト Dim strNewFolder ' 移動するフォルダ Dim i Dim strEXE Set objWshShell = WScript.CreateObject("WScript.Shell") If Err.Number = 0 Then strNewFolder = "D:\Test" objWshShell.CurrentDirectory = strNewFolder objWshShell.Exec("cmd.exe").StdOut.ReadAll Else WScript.Echo "エラー: " & Err.Description End If For i = 1 to 15 strCOM = "XXXX.exe @ D:\HEPPOKO" & Right("000" & CStr(i), 4) & ".txt" Set oExec = WshShell.Exec(strCOM) WScript.Sleep(300000) Next Set objWshShell = Nothing

  • VBSでレジストリキー名に円マークをつける

    「SQL\INSTANCE」という名前のキーをレジストリに作成したいのですが、円マークを入れると階層化されてしまうので、困っています。 カンタンな質問かもしれませんがどなたか教えてください。 以下、VBSで作成 Option Explicit On Error Resume Next Dim objWshShell ' WshShell オブジェクト Set objWshShell = WScript.CreateObject("WScript.Shell") If Err.Number = 0 Then objWshShell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\SQL\INSTANCE", "SQL", "REG_SZ" WScript.Echo "ODBC設定変更:完了" Else WScript.Echo "エラー: " & Err.Description End If Set objWshShell = Nothing

  • 入力ボックス閉じた時間を出力する方法

    こんにちは。 下記に記載しましたスクリプトは、 VBSファイルを実行することにより入力ボックスが表示され、 入力ボックスに文字列を入力すると、 「Active.csv」というファイルに 『現在の時間』と『入力文字列』が出力されます。 このVBSスクリプト内に入力ボックスにて「OK」を 押したときの時間を拾っていれたいと思っております。 どのような手法が考えられますでしょうか? ご教授のほど、よろしくお願いします。 Option Explicit On Error Resume Next Dim objFSO ' FileSystemObject Dim objFile ' ファイル書き込み用 Dim Reason ' ファイル入力 Reason = InputBox("何かいれてください。") Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") If Err.Number = 0 Then Set objFile = objFSO.OpenTextFile("Active.csv", 8, True) If Err.Number = 0 Then objFile.Write(Date()) objFile.Write(",") objFile.Write(Time()) objFile.Write(",") objFile.Write(Reason) objFile.Write(",") 'ここに入力ボックスにて「OK」を押したときの時間を拾っていれたいです。 objFile.Write(",") objFile.Write(vbNewLine) objFile.Close Else WScript.Echo "ファイルオープンエラー: " & Err.Description End If Else WScript.Echo "エラー: " & Err.Description End If

  • VBSでファイル作成後、書き込みできない

    ファイルが存在している場合は、ファイルをオープンして書き込み、ファイルが存在していない場合は、ファイルを作成後、オープンして書き込みを行わせたいと考えています。 しかし、ファイルが存在していないとき、ファイルは作成されるのですが、『エラー:800A0046 書き込みできません。VBScript実行時エラー』が出て、書き込みができません。モードをWritingにしても同じでした。 お手数をおかけしますが、ご教示いただけますようお願いいたします。 Option Explicit '■ オブジェクトの宣言 Dim objFSO Dim objFile '■ 定数の宣言 Const strFileName = "C:\VBS\TEST.TXT" '■ 定数の宣言 '// ファイル入出力モード(8:追加書き込み) Const ForAppending = 8 Set objFSO = CreateObject("Scripting.FileSystemObject") If objFSO.FileExists(strFileName) Then WScript.Echo "ファイルが見つかりました" Else WScript.Echo "ファイルが見つかりませんでした" Set objFile = objFSO.CreateTextFile(strFileName) If IsObject(objFile) Then WScript.Echo "ファイルを作成しました" Else WScript.Echo "ファイルを作成できませんでした" WScript.Quit(1) End If End If '// ファイルのオープン Set objFile = objFSO.OpenTextFile(strFileName,ForAppending) objFile.WriteLine "2012/12/21,100,ブレーキパッド,35000"

  • ASPからVBScriptの実行

    ASPから下のVBScriptを実行使用とすると "500"Internal Server Error が出力されて困ってます。 へるぷみー Dim objWSHShell Set objWSHShell=WScript.CreateObject("WScript.Shell") objWSHShell.Run "cscript.exe d:\test.bat" objWSHShell=Nothing

  • VBSを使用したSQLCMDからのQuit

    VBSを使用してSQLCMDを実行してデータベースに接続できることを確認しましたが、 データベースの切断ができません。 SQLCMDユーティリティに制御が移ってしまっているため、VBSのシェルオブジェクトを使用して切断できないのではと考えております。 ADOを使用すれば、いいのは分かっているのですが、実際の環境ではADOを使用したデータベースへの接続が安定しないため、SQLCMDで接続する方法でスクリプトを作成しました。 何かいい方法がありましたら、ご教示頂けますでしょうか。 Option Explicit '■ オブジェクトの宣言 Dim objFSO Dim objFile Dim objWShell '■ 変数の宣言 Dim strBuf Dim strSearch Dim IngPos Dim IngCnt Dim idx Dim Param(3) Dim Hit Dim HitCnt Dim DBConCmd Dim DisConCmd '■ 定数の宣言 '// データベースコンフィグファイル格納フォルダ Const strDBConfigFolder = "c:\DBConfig" '// データベースコンフィグファイル Const strDBConfigFile = "c:\DBConfig\SQLCMDDBCon.cfg" '// 検索開始位置(1文字目) Const IngStart = 1 '// テキストモードで比較 Const IngTextCmp = 1 On Error Resume Next '□ FSOオブジェクトの作成 Set objFSO = CreateObject("Scripting.FileSystemObject") If Err.Number = 0 Then '□ データベースコンフィグファイル格納フォルダの存在チェック If objFSO.FolderExists(strDBConfigFolder) Then WScript.Echo "データベースコンフィグファイルを格納フォルダが存在します" '□ データベースコンフィグファイルの存在チェック If objFSO.FileExists(strDBConfigFile) Then WScript.Echo "データベースコンフィグファイルが存在します" '□ データベースコンフィグファイルの読み込み Set objFile = objFSO.OpenTextFile(strDBConfigFile, 1) '□ データベースコンフィグファイル読み取りチェック If Err.Number = 0 Then WScript.Echo "データベースコンフィグファイルが読み取りできます" '□ ディレクティブをセット strSearch = Array("<server_name>", "<login_id>", "<password>") '□ ヒットカウントの初期化 HitCnt = 0 Do Until objFile.AtEndOfLine = True '□ 1行読み込み、バッファに格納 strBuf = objFile.ReadLine '□ インデックスの初期化 idx = 0 '□ ヒットフラグの初期化 Hit = 0 '□ ディレクティブヒット判定用の初期化 IngPos = 0 Do Until idx > 2 or Hit = 1 IngPos = Instr(IngStart, strBuf, strSearch(idx), IngTextCmp) If IngPos = 0 Then WScript.Echo strSearch(idx) & "が見つかりません" idx = idx + 1 Else WScript.Echo strSearch(idx) & "が見つかりました" IngCnt = Len(strSearch(idx)) Param(idx) = Mid (strBuf, IngCnt + 1) Hit = 1 HitCnt = HitCnt + 1 End If Loop Loop Else WScript.Echo "データベースコンフィグファイルが読み取りできまないため、処理を終了します" WScript.Quit(1) End If Else WScript.Echo "データベースコンフィグファイルが存在しないため、処理を終了します" WScript.Quit(1) End If Else WScript.Echo "データベースコンフィグファイルを格納フォルダが存在しないため、処理を終了します" WScript.Quit(1) End If Else WScript.Echo "FSOオブジェクトが作成できないため、処理を終了します" WScript.Quit(1) End If '□ Shellオブジェクトの作成 Set objWShell = WScript.CreateObject("WScript.Shell") If Err.Number = 0 Then DBConCmd = "sqlcmd -S " & Param(0) & " -U " & Param(1) & " -P " & Param(2) objWShell.run DBConCmd If Err.Number = 0 Then WScript.Echo "データベースサーバーに接続しました" Else WScript.Echo "データベースサーバーに接続できませんでしたので、処理を終了します" WScript.Quit(1) End If Else WScript.Echo "Shellオブジェクトが作成できないため、処理を終了します" WScript.Quit(1) End If DBDisConCmd = "exit" objWShell.run DBDisConCmd '□ オブジェクトのクローズ objFile.Close '□ オブジェクトの開放 Set objShell = Nothing Set objFSO = Nothing

専門家に質問してみよう