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

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

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

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

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

Q&A

解決済

1回答

2679閲覧

cmdファイルからファイルパスを引数にしてvbsを起動したい

Kiri_Tanpo

総合スコア13

VBScript

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

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

0グッド

0クリップ

投稿2018/03/15 01:19

編集2018/03/15 01:59

前提・実現したいこと

cmdファイルでファイルパスを設定して、引数としてvbsを起動したい。

発生している問題・エラーメッセージ

以下のエラーが発生してしまう。
エラー:オブジェクトがありません。
コード:800A01A8
ソース:Microsoft VBScript 実行時エラー

該当のソースコード

cmd

1~省略~ 2set CONTROL_FLAG=%1 3set LOG_FILE=%LOG_DIR%\INSERT_%fileName%.log 4~vbs起動ソース 5cd %BATCH_HOME% 6insert.vbs %LOG_FILE% %CONTROL_FLAG% 7

%1の変数は0か1です。

vbs

1Option Explicit 2~~ 3'制御フラグ 4Dim CONTROL_FLAG 5'ログファイルパス 6Dim LOG_FILE 7 8'cmdからの引数を受け取る 9Set LOG_FILE = WScript.Arguments(0)      '←この行で上記のエラーが発生しています。 10Set CONTROL_FLAG = WScript.Arguments(1) 11 12~以下略

試したこと

補足情報

OS:Windows7

不足あれば、追記いたします。
よろしくお願いします。

追記

cmdファイルについて内容追記します。

cmd

1@echo OFF 2rem テスト用バッチ処理ホームディレクトリ 3set BATCH_HOME=C:\~~\INSERT 4rem ログディレクトリ 5set LOG_DIR=%BATCH_HOME%\Log 6rem 制御フラグ 7set CONTROL_FLAG=%1 8 9rem *----------------------------------------------------------------* 10rem * ログファイル作成 11rem *----------------------------------------------------------------* 12set yyyy=%date:~0,4% 13set mm=%date:~5,2% 14set dd=%date:~8,2% 15 16set time2=%time: =0% 17 18set hh=%time2:~0,2% 19set mn=%time2:~3,2% 20set ss=%time2:~6,2% 21 22set fileName=%yyyy%%mm%%dd%%hh%%mn%%ss% 23set logTime=%hh%:%mn%:%ss% 24echo %date% %logTime%:INSERT処理を開始します。 >> %LOG_DIR%\INSERT_%filename%.log 25 26set LOG_FILE=%LOG_DIR%\INSERT_%fileName%.log 27 28rem *----------------------------------------------------------------* 29rem * CSVファイル取込INSERT処理(insert.vbs) 30rem *----------------------------------------------------------------* 31rem 制御フラグが設定されていない場合 32IF "%1" EQU "" ( 33 echo 制御フラグの値が設定されていません。 34 echo 制御フラグは0か1を設定してください。 35 echo 0:処理中断 36 echo 1:続行 37 pause 38 exit /b 39rem 制御フラグが0の場合 40 ) ELSE IF "%1" EQU "0" ( 41 cd %BATCH_HOME% 42 insert.vbs %LOG_FILE% %CONTROL_FLAG% 43rem 制御フラグが1の場合 44 ) ELSE IF "%1" EQU "1" ( 45 cd %BATCH_HOME% 46 insert.vbs %LOG_FILE% %CONTROL_FLAG% 47rem 制御フラグが0,1以外の値の場合 48 ) ELSE ( 49 echo 制御フラグの値が誤っています。 50 echo 制御フラグは0か1を設定してください。 51 echo 0:処理中断 52 echo 1:続行 53 pause 54 exit /b 55 ) 56 57set END_CODE=%ERRORLEVEL% 58~終了処理~ 59pause 60exit

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

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

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

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

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

guest

回答1

0

ベストアンサー

提示されているコードの範囲では、vbsまできちんと情報が伝わっているようですが。
(バッチファイルの引数に与えた値が、vbsまで伝わっているということ)

エラー:オブジェクトがありません。

なので、省略しているコードのどこかに問題があるのでは?

投稿2018/03/15 01:34

ttyp03

総合スコア16996

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

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

Kiri_Tanpo

2018/03/15 02:04

回答ありがとうございます。 cmdのソースを追記しました。 vbsの方は省略部分は定数設定のみなので、今回のエラーに影響はないと思われます。 追記前のソースに問題がないとなると、cmdでの変数の設定方法に問題があるのでしょうか。
ttyp03

2018/03/15 02:23

あぁ見落としてました。 Setを使うのはオブジェクトを代入するときです。 WScript.Arguments(n)は単なる文字列の配列ですから、Setは不要です。 LOG_FILE = WScript.Arguments(0) CONTROL_FLAG = WScript.Arguments(1)
Kiri_Tanpo

2018/03/15 03:00

正常動作、確認しました。 WScript.Arguments(n)の理解が曖昧でした。 素早い回答と対応、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問