VBスクリプトで指定したコマンドで日付を取得する方法

このQ&Aのポイント
  • VBスクリプトで指定したコマンドを使用して日付を取得する方法について困っています。具体的には、cip△dtコマンドの出力から日付を取得し、DOSの変数として保持したいです。
  • VBスクリプトを使用して、前日の日付を取得し、DOSの変数として保持する方法を知りたいです。
  • VBスクリプトでの日付取得に関して困っています。具体的には、VBスクリプトで指定したコマンドの出力から日付を取得したいです。助けていただけると助かります。
回答を見る
  • ベストアンサー

VBスクリプトで指定したコマンドで日付を取得するには?

お世話になります。 VBスクリプトがうまく設定できなくて困っています。 下記は日付取得までです。 rem #***************************************** Option Explicit dim w_date rem #***************************************** rem # STEP01 パラメータチェック rem #***************************************** IF WScript.Arguments.Count = 0 then WScript.Echo "Parameter_No" WScript.Quit 99 End IF IF IsNumeric(WScript.Arguments.Item(0)) = False then WScript.Echo "Numeric_Check_Error" WScript.Quit 99 End IF rem #***************************************** rem # STEP02 日付計算 rem #***************************************** w_date = replace(DateAdd("d",WScript.Arguments.Item(0), date),"/","") WScript.Echo w_date Script.Quit 0 【前提】 cip△dtコマンドをDOSで打つと例のように出力されます。 【例】 YYYY/MM/DD△00:00:00 cip~~~~~~~ YYYY/MM/DD△00:00:00 cip~~~~~~~ 【実現したいこと】 VBスクリプトで、その1行目の日付を取得し、DOSの変数として保持したいです。 【前提】 cip△-dYYYYMMDDをDOSで打つとYYYYMMDDが入力した通りにでます。 【例】 YYYY/MM/DD△00:00:00 cip~~~~~~~ 【実現したいこと】 VBスクリプトで、前日の日付を取得し、DOSの変数として保持したいです。 どなたか助けてください。 宜しくお願いします。

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

cip コマンドについて知らないのですが、 コマンド > ファイル名 で標準出力の内容をファイルに保存することができます。 VBScript からは、このファイルから読込すれば、 コマンドの実行結果をVBScript に取り込むことができます。 また、 Set WshShell = CreateObject("WScript.Shell") Set oExec = WshShell.Exec("コマンド") のようにすれば、 oExec.StdOut から標準出力を取り込めます。 ところで、DOSの変数ってなんどすか 環境変数のこと? バッチ変数のこと? VBスクリプトで実行しているならVBスクリプトの変数で保持すれば良いように思います。

gztar2005
質問者

補足

cipというのはA-AUTOというJOB管のミドルウェアの特別なDOSで実行されるコマンドです。 もうひとつバッチファイルがあって、そちらで取得した日付をバッチファイルで判定してリターンコードとログ出力で、正常・異常を検知する仕組みを作ろうとしています。つまり環境変数です。

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

#2補> 基準の日から前後する日を求めるには DateAdd 関数が使えます。 結局どのようにしたいのかよくわかりません。

gztar2005
質問者

お礼

仕様が変わってしまいました。わかりづらい仕様すみませんでした。結局、日付を取得し、ログを採取し、障害検知をする仕組みではなくなってしまったんです。 ありがとうございました。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

>つまり環境変数です。 連接の仕方がもう一つわからないんですけど、 VBScript から環境変数の値は取得できますし、値の設定もできますけど、 VBScript 内で設定した環境変数は、別プロセス(スクリプトの実行が終了して、別のバッチを立ち上げても)からは参照できません。 つまり、別のバッチから参照できるような環境変数を設定できません。

gztar2005
質問者

補足

本当にしたいことはDOSの中で、 (1)運用日付 (2)当日日付 (3)翌日日付 を求めることができることが条件です。 当日日付を求めることはできますが、 (1)は日付を分割して当日日付を-2すればいいのかもしれません。(3)は+1すえばいいのかもしれません。 VBスクリプトは要らないのかもしれません。 今、過去ログを参照しています。

関連するQ&A

  • VBスクリプトで指定コマンドを使って日付の取得

    お世話になります。 VBスクリプトがうまく設定できなくて困っています。 下記は日付取得までです。 rem #***************************************** Option Explicit dim w_date rem #***************************************** rem # STEP01 パラメータチェック rem #***************************************** IF WScript.Arguments.Count = 0 then WScript.Echo "Parameter_No" WScript.Quit 99 End IF IF IsNumeric(WScript.Arguments.Item(0)) = False then WScript.Echo "Numeric_Check_Error" WScript.Quit 99 End IF rem #***************************************** rem # STEP02 日付計算 rem #***************************************** w_date = replace(DateAdd("d",WScript.Arguments.Item(0), date),"/","") WScript.Echo w_date Script.Quit 0 【前提】 cip△dtコマンドをDOSで打つと例のように出力されます。 【例】 YYYY/MM/DD△00:00:00 cip~~~~~~~ YYYY/MM/DD△00:00:00 cip~~~~~~~ 【実現したいこと】 VBスクリプトで、その1行目の日付を取得し、DOSの変数として保持したいです。 【前提】 cip△-dYYYYMMDDをDOSで打つとYYYYMMDDが入力した通りにでます。 【例】 YYYY/MM/DD△00:00:00 cip~~~~~~~ 【実現したいこと】 VBスクリプトで、前日の日付を取得し、DOSの変数として保持したいです。 どなたか助けてください。 宜しくお願いします。

  • バッチファイル DOS Windows2000環境での日付取得

    バッチファイル DOS Windows2000環境での日付取得 いつもお世話になります。 Windows2000環境にて当日日付を取得する下記のバッチファイルがあります。 ~コード開始~ REM 日付取得 FOR /F "tokens=1 delims= " %%i in ('DATE /t') do SET TEST1=%%i ECHO %TEST1% ~コード終了~ 上記プログラム結果は【YYYY/MM/DD】となります。 ※YYYY:当年 MM:当月 DD:当日 上記コードはWindows2000環境のDOSプロンプトにて【DATE /t】コマンドを実行すると 【YYYY/MM/DD 曜日】が表示されるのを利用しております。 結果的にスペース区切りで1節目の【YYYY/MM/DD】だけを抜き取っております。 これは問題ありませんでした。 しかし、下記コードで実行した所、意図した結果と異なるものになりました。 ~コード開始~ REM 日付取得 FOR /F "tokens=2 delims= " %%i in ('ECHO %DATE%') do SET TEST1=%%i ECHO %TEST1% ~コード終了~ 上記プログラム結果は【YYYY/MM/】となってしまい、【DD】が抜けておりました。 ※YYYY:当年 MM:当月 DD:当日 上記コードはWindows2000環境のDOSプロンプトにて【DATE】コマンドを実行すると 【曜日 YYYY/MM/DD】が表示されるのを利用しております。 結果的にスペース区切りで2節目の【YYYY/MM/DD】だけを抜き取る予定でしたが 見ての通り予想外の結果です。 この現象はなぜでしょうか? 何が起因して【DD】が表示されないのでしょうか? 他に当日日付の取得方法はいくつか知っていますが、 上記プログラムで取得したいのです。 どなたかご存知の方がいらっしゃればご教授願いませんでしょうか? 以上、何卒宜しくお願い致します。

  • DOSで日付取得

    XPのDOSで日付を取得するのに、 SET YYYY=%Date:~0,4% SET MM=%Date:~5,2% SET DD=%Date:~8,2% これで取得できたのですが、98SEで上記を試すと取得できませんでした。 OSによってDOSに違いがあるのでしょうか?

  • シェルスクリプト:入力した日付のチェック

    BourneShell勉強中の初心者のものです。 ユーザーが(yyyy-mm-dd)の形式で入力した日付に対して、日付が指定されたフォーマットにあいかつ範囲以内であることチェックして、次のステップに進みます。 1月から12月まで毎月31日まであるものとみなし、1000年から9999年までが範囲内です。 以下のようなスクリプトを書いたのですが、もう少し短くすっきりとできないでしょうか?何か他に方法があればご教授お願いします。 echo "日付を入力してください(yyyy-mm-dd):\c" read hiduke case $hiduke in [1-9][[0-9][0-9][0-9]-0[1-9]-0[1-9]) break ;; [1-9][[0-9][0-9][0-9]-1[0-2]-0[1-9]) break ;; [1-9][[0-9][0-9][0-9]-0[1-9]-[1-2][0-9]) break ;; [1-9][[0-9][0-9][0-9]-1[0-2]-[1-2][0-9]) break ;; [1-9][[0-9][0-9][0-9]-0[1-9]-3[01]) break ;; [1-9][[0-9][0-9][0-9]-1[0-2]-3[31]) break ;; "") echo "入力されていません" ;; *) echo "指定外です" ;; esac

  • vbスクリプトからexcelのVBAを起動したい。

    vbスクリプトからexcelのVBAを起動したいので、初心者ながら下記のようにコーディングしましたが、excelのVBA;main()が実行できません。  <excelのVBA;main()は単独では正常に起動します。> vbスクリプトからexcelのVBAの起動の方法を教えて下さい。 そのスクリプトをタスク(元旦)に起動したいです。 <vbスクリプト コーディング> dim exlApp On Error Resume Next set exlApp = createobject("Excel.Application") exlApp.visible = true exlApp.Workbooks.Open "C:\年賀状.xls" exlApp.run "Main" If Err Then WScript.Quit End IF If Not(exlApp Is Nothing) Then exlApp.Quit set exlApp = nothing End If

  • 日付取得、計算及び表示コードが動作しません。

    日付取得、計算及び表示コードが動作しません。 下記のコードのどこが間違っているのか、どなたかお分かりですか? このコードでは、今日の日付をサーバから取得し、それから10日後の日付を計算して表示したいです。 $currentdate = .getdate(); $yyyy = $currentdate["year"]; $mm = $currentdate["mon"]; $dd = $currentdate["mday"]; $int_day = 10; $duedate = .date("y/m/d", mktime(0, 0, 0, $mm, $dd+$int_day, $yyyy)); echo "$duedate" また、上記のコードが動作するようになったとして、表示される日付は「2008/06/10」のようになるかと思いますが、これを「2008年06月10日」のように表示させる方法をご存知でしょうか? >$duedate = .date("y/m/d", mktime(0, 0, 0, $mm, $dd+$int_day, $yyyy)); 上記コードを下記のように変更してもだめです。 >$duedate = .date("y年m月d日", mktime(0, 0, 0, $mm, $dd+$int_day, $yyyy)); よろしくお願いします。

    • ベストアンサー
    • PHP
  • バッチファイルとVBスクリプトの連携エラーコード取得

    イベントログにアベンドしたJOBが出力されない場合 せめて、logファイルにだけでも内容を書きたいのですが うまくいきません。 リターンコードが全部(1)の元バッチファイルで0がかえってきます。 どなたがご教授願います。 (1)親バッチファイルの中味 @echo off rem============================================== rem rem ARG1 = スケジュール日 rem ARG2 = ネットワーク名 rem ARG3 = 終了コード rem rem ================================================ set SDATE=%1 set NETWORK=%2 set RC=%3 set SDATE_SHORT=%SDATE:~2,6% set WK_DIR=D:\temp set TOML_TXT=%WK_DIR%\toml_%NETWORK%.txt set VBSCRIPT=D:\stage\tools\bat\GetJobName.vbs echo ### ARG1(%1) ARG2(%2) ARG3(%3) ### if "%RC%"=="00" ( echo NETWORK NORMAL END #AUTONEND# ) else ( echo NETWORK ABNORMAL END #AUTONEND# if exist %TOML_TXT% ( del %TOML_TXT% ) toml -p999 > %TOML_TXT% cscript //Nologo %VBSCRIPT% %SDATE_SHORT% %NETWORK% %RC% %TOML_TXT% )      if not "%errlrlevel%"=="0" ( set EVT_CRT_RC=%errorlevel% echo EVETCREATE Failed. RC=%EVT_CRT_RC% ) ) exit (2)VBスクリプトの中味 800文字以上になるので、補足要求してください。 (3)イベントログ出力バッチファイルの中味 @echo off rem rem 引数 rem %1:SDATE rem %2:NETWORK rem %3:RC rem %4:JOB set MSG=A-AUTO JOBNET : NETWORK(%2) JOB(%4) SDATE=%1 ABNORMALLY ENDED RC=%3 eventcreate /l application /t error /so autonend /id 999 /d "%MSG%" exit %errorlevel%

  • バッチファイル IF 複数条件方法

    WindowsXP環境にて下記のバッチファイルがあります。 rem --- 時間変数 --- set yyyy=%date:~-10,4% set yy=%date:~-8,2% set mm=%date:~-5,2% set dd=%date:~-2,2% rem --- ログフォルダ変数 --- set LOG_DIR1=D:\LOG rem --- ログファイル変数 --- set LOG_FILE1=LOG.txt set A=1 set B=2 IF %A% == 1 IF %B% == 2 ( echo %yyyy%%mm%/%dd% %HHMMSS%正常終了 >> %LOG_DIR1%\%LOG_FILE1% ) ELSE (echo %yyyy%%mm%/%dd% %HHMMSS%異常終了 >> %LOG_DIR1%\%LOG_FILE1%) pause 上記プログラムだとログ上で【200912/10 正常終了】と表示されるのに、【set A=10】と変更して 【200912/10 異常終了】の表示がログ上に出力されるだろうと期待して実行した結果、 何も表示されてませんでした。 どこに問題があるのでしょうか?

  • バッチファイル 2つのログに出力 短縮版

    お世話になっております。 WindowsXP環境にて下記のバッチファイルがあります。 コード-------------------------------------------------------------------------------- rem === 変数設定 =============================================================== rem --- 時間変数 --- set yyyy=%date:~-10,2% set yy=%date:~-8,2% set mm=%date:~-5,2% set dd=%date:~-2,2% set HH=%TIME:~0,2% set MM2=%TIME:~3,2% set SS=%TIME:~6,2% rem --- フォルダ変数 --- set LOG_DIR1=D:\test rem --- ファイル変数 --- set LOG_FILE1=LOG.txt set LOG_FILE2=LOG_ALL.txt set LOG_FILENAME1=%LOG_DIR1%\%LOG_FILE1% set LOG_FILENAME2=%LOG_DIR1%\%LOG_FILE2% set BAT_FILE1=test.bat rem コマンド拡張機能有効化 setlocal ENABLEEXTENSIONS rem === 変数設定 =============================================================== REM <開始処理>=============== call :TIME echo %BAT_FILE1% 処理日 = %yyyy%%yy%/%mm%/%dd% 処理開始時間= %HH%:%MM2%:%SS%>> %LOG_FILENAME1% echo. >> %LOG_FILENAME1% echo %BAT_FILE1% 処理日 = %yyyy%%yy%/%mm%/%dd% 処理開始時間= %HH%:%MM2%:%SS%>> %LOG_FILENAME2% echo. >> %LOG_FILENAME2% rem 現在の日付/時間を取得 :TIME set yyyy=%date:~-10,2% set yy=%date:~-8,2% set mm=%date:~-5,2% set dd=%date:~-2,2% set HH=%TIME:~0,2% set MM2=%TIME:~3,2% set SS=%TIME:~6,2% exit /b コード-------------------------------------------------------------------------------- 上記プログラムは日付を2つのログに出力していますが、 echo %BAT_FILE1% 処理日 = %yyyy%%yy%/%mm%/%dd% 処理開始時間= %HH%:%MM2%:%SS%>> %LOG_FILENAME1% echo. >> %LOG_FILENAME1% echo %BAT_FILE1% 処理日 = %yyyy%%yy%/%mm%/%dd% 処理開始時間= %HH%:%MM2%:%SS%>> %LOG_FILENAME2% echo. >> %LOG_FILENAME2% と二重になっている無駄なコードとなり、見栄えが良くないです。 これを1つのコードで2つのログファイルに出力可能な短縮プログラムは可能でしょうか? ご存知の方がいましたら、ご教授願いますでしょうか? 何卒宜しくお願い致します。

  • [vbScript]ファイルの日付

    任意のファイルの作成日付を取得するまでは下記の記述でできたのですが、「YYYY/MM/DD hh:mm:ss」で取得します。 --------------------------- Set fso = CreateObject("Scripting.FileSystemObject") Set src = fso.Getfile(ckFile) WScript.Echo src.DateCreated --------------------------- YYYYMMDD形式で取得したい場合は、どうすればよいでしょうか?

専門家に質問してみよう