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

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

ただいまの
回答率

88.78%

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

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 3,608

Kiri_Tanpo

score 13

 前提・実現したいこと

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

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

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

 該当のソースコード

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


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

Option Explicit
~~
'制御フラグ
Dim CONTROL_FLAG
'ログファイルパス
Dim LOG_FILE

'cmdからの引数を受け取る
Set LOG_FILE = WScript.Arguments(0)      '←この行で上記のエラーが発生しています。
Set CONTROL_FLAG = WScript.Arguments(1)

~以下略

 試したこと

 補足情報

OS:Windows7

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

 追記

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

@echo OFF
rem テスト用バッチ処理ホームディレクトリ
set BATCH_HOME=C:\~~\INSERT
rem ログディレクトリ
set LOG_DIR=%BATCH_HOME%\Log
rem 制御フラグ
set CONTROL_FLAG=%1

rem *----------------------------------------------------------------*
rem *   ログファイル作成
rem *----------------------------------------------------------------*
set yyyy=%date:~0,4%
set mm=%date:~5,2%
set dd=%date:~8,2%

set time2=%time: =0%

set hh=%time2:~0,2%
set mn=%time2:~3,2%
set ss=%time2:~6,2%

set fileName=%yyyy%%mm%%dd%%hh%%mn%%ss%
set logTime=%hh%:%mn%:%ss%
echo %date% %logTime%:INSERT処理を開始します。 >> %LOG_DIR%\INSERT_%filename%.log

set LOG_FILE=%LOG_DIR%\INSERT_%fileName%.log

rem *----------------------------------------------------------------*
rem *   CSVファイル取込INSERT処理(insert.vbs)
rem *----------------------------------------------------------------*
rem 制御フラグが設定されていない場合
IF "%1" EQU "" ( 
    echo 制御フラグの値が設定されていません。
    echo 制御フラグは01を設定してください。
    echo 0:処理中断
    echo 1:続行
    pause
    exit /b
rem 制御フラグが0の場合
 ) ELSE IF "%1" EQU "0" ( 
    cd %BATCH_HOME%
    insert.vbs %LOG_FILE% %CONTROL_FLAG%
rem 制御フラグが1の場合
 ) ELSE IF "%1" EQU "1" ( 
    cd %BATCH_HOME%
    insert.vbs %LOG_FILE% %CONTROL_FLAG%
rem 制御フラグが0,1以外の値の場合
 ) ELSE ( 
    echo 制御フラグの値が誤っています。
    echo 制御フラグは01を設定してください。
    echo 0:処理中断
    echo 1:続行
    pause
    exit /b
 ) 

set END_CODE=%ERRORLEVEL%
~終了処理~
pause
exit
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/03/15 11:04

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

    キャンセル

  • 2018/03/15 11:23

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

    キャンセル

  • 2018/03/15 12:00

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

    キャンセル

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

  • ただいまの回答率 88.78%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る