VBSで自身の実行状態をチェックする方法

このQ&Aのポイント
  • VBSについてご教授いただきた事がございます。URIAGE.batというバッチファイルを実行するTEST.VBSがあります。
  • VBSには動作中のチェック方法があり、エラーメッセージを表示して処理を回避することができます。
  • 環境はWindows XP SP SP3です。どなたかご教授いただけますと幸いです。
回答を見る
  • ベストアンサー

VBSで自身の実行状態をチェックする方法

お世話になります。 VBSについてご教授いただきた事がございます。 下記のような"URIAGE.bat"というバッチファイルを実行するTEST.VBSがあります。 当初はURIAGE.batというバッチファイルを直接クリックして動かしていましたがDOS画面を表示させたくないと思い、検索したところ下記のようにVBSに記述すれば非表示になる、とありましたので早速試してみました。 CreateObject("WScript.Shell").Run "C:\URIAGEDATA\system\URIAGE.bat",0 ここからが質問ですが、あるユーザーがこのVBSを動かした直後に、再度このVBSをクリックしてしまい、処理がエラーになってしまいました。 こういった場合にTEST.VBSが自分が"動作中"ということを認識して"動作中"というエラーメッセージを出してURIAGE.bat処理を回避させる方法はありますでしょうか? 環境:Windows XP SP SP3 どなたかご教授いただけますと幸いでございます。

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

  • ベストアンサー
回答No.3

そうじゃなくて、 > if exist "C:URIAGEDATA\system\空ファイル.txt" goto PROCESS1 のファイルの指定が、相対パスになっているってことです。("C:"と"C:\"の違い)

yakkun2338
質問者

お礼

m-take0220さん 何度もご連絡ありがとうございました! ご教授いただきました方法で実現できました。 本当にありがとうございました。 初歩的なことばかりお聞きして本当に申し訳ありませんでした。 この度は本当に助かりました。 ありがとうございました。

その他の回答 (2)

回答No.2

> CD C:\URIAGEDATA\system > if exist "C:URIAGEDATA\system\空ファイル.txt" goto PROCESS1 これだと、C:\URIAGEDATA\system\URIAGEDATA\system\空ファイル.txt というファイルが存在するかチェックすることになります。 if exist "C:\URIAGEDATA\system\空ファイル.txt" goto PROCESS1 でうまくいくんじゃないでしょうか。

yakkun2338
質問者

補足

m-take0220さん またまた早速のご連絡ありがとうございました! 早速、ご教授いただきました様に冒頭の ”CD C:\URIAGEDATA\system” の部分を削除してみましたが結果は同じでした・・。 "空ファイル.txt"があってもなくても必ずPROCESS2に入ってしまいます。

回答No.1

特定の場所(例えばバッチファイルと同じフォルダ)などに、チェック用のファイルを作成するようにして、バッチファイル終了時にチェック用のファイルを削除する方法があります。 ファイルが既に存在する場合は、別のプロセスが起動中と判断できます。

yakkun2338
質問者

補足

m-take0220さん早速のご連絡ありがとうございました! VBSから呼んでいるURIAGE.bat側で処理中に"空ファイル.txtというファイルを作成するようにして、処理が完了したら"空ファイル.txt"を削除するようにしました。 URIAGE.bat側でIF EXIST~で"空ファイル.txt"が存在すれば処理中止(PROCESS1)、存在しなければ処理開始(PROCESS2)というようにロジックを組んだつもりなのですが、なぜかすべてPROCESS2に入ってしまいます。 IF EXISTのチェックが動いていないようです。 大変お手数ですが私の問題点をご教授いただけませんでしょうか? 以下ロジックです。 CD C:\URIAGEDATA\system if exist "C:URIAGEDATA\system\空ファイル.txt" goto PROCESS1 if not exist "C:URIAGEDATA\system\空ファイル.txt" goto PROCESS2 :PROCESS1 exit /b :PROCESS2 del 空ファイル.txt TYPE NUL> 空ファイル.txt ***EXCELのマクロを動かします**** del 空ファイル.txt

関連するQ&A

  • VBSでファイル存在の有無チェック

    お世話になります。 前回も似たような質問をしておりましたが改めて質問させていただきます。 下記のような"URIAGE.bat"というバッチファイルを実行するTEST.VBSがあります。 CreateObject("WScript.Shell").Run "C:\URIAGEDATA\system\URIAGE.bat",0 やりたい事は"C:\URIAGEDATA\system"配下に"空ファイル.txt"というファイルが存在しなければURIAGE.batを実行して、存在しt場合はURIAGE.batを実行しないで終了、という仕組みにしたいのです。 前回の質問時に"URIAGE.bat実行中に"C:\URIAGEDATA\system"配下に"空ファイル.txt"というチェック用のテンポラリーのファイルを作成して、URIAGE.batを実行した時に、このファイルの存在の有無をチェックする方法をご教授いただきまして、お陰様でうまくいきました。 今回は呼出し元のTEST.VBSの中で"C:\URIAGEDATA\system"配下に空ファイル.txt"が存在しなければURIAGE.batを実行して、存在しなければ実行しないで終了、という様にしたいのです。 環境:Windows XP SP SP3 どなたかご教授いただけますと幸いでございます。

  • vbsからバッチファイル実行時の引数渡しについて

    vbsからバッチファイルを実行する時に、引数として変数を渡すことはできるでしょうか。バッチファイルは引数を受け取れる記述をしています。変数の値は常に変動します。 CreateObject("WScript.Shell").Run "C:\HULTOOL\test.bat",0 を使ってtest.batを実行しています。"C:\HULTOOL\test.bat aaa(aaa)は固定の数値ですという書き方で、バッチファイルがaaaを第一引数として受け取れることは試してできました。しかし、aaaを変数にすると成功しません。何かよい記述方法はあるのでしょうか。ご教授ください。

  • vbsにてバッチファイルの実行

    vbsにて引数ありのバッチファイルを実行するためには、 どのようにしたらよろしいのでしょうか? 例えば、下記のものをvbsにて実行したいと考えております。 ------------------- aiueo.bat 1 2 3 4 5 ------------------- よろしくお願いします。

  • batからvbs起動

    バッチファイルからVBSファイルを起動したいと思いsample.batに以下の記述をしました。 「cscript //NoLogo "test1.vbs"」 するとプロンプト上に上記メッセージが繰り返し(無限ループ?)表示されてしまいます。 バッチからVBSファイルを起動するには何かコマンドが必要なのでしょうか?

  • CScript vbsファイル実行 途中で止めたい

    Cscript でVBSファイルを実行するとコマンドプロンプトの画面が立ち上がって処理がはじまりますが、 実行中にEnterキーをおさないと次の処理にいかないように、プログラムを書きたいのですが、 書き方わかる方いらっしゃいましたら、教えてください。Enterキーでなくても構いません。 例えばaaa.vbsの中で、大きく二つ処理があって、(1)の処理→(2)の処理の順番だった時に (1)の処理→(コマンドプロンプト上で)止める、自分でなにかボタン押す→(2)の処理みたいな感じにしたいと思っています。 自分が試したのが、以下です、駄目でした。 WScript.StdInを使ったのですが、これを一度使った後に、Wscript.Echoを使うと、 次のWScript.StdInが使えなくて意味がありませんでした。 WScript.StdIn(入力表示されてとまった) → Wscript.Echo "テスト" →WScript.StdIn(入力表示なく、とまらない)

  • vbsファイルにてaiueo.batを昨日の日付にて実行する方法について

    vbsファイルにてaiueo.batを昨日の日付(2007 01 27)にて実行するため 下記のようなスクリプトファイルを作成しましたが、 最終行にてエラーにより処理が止まってしまいます。 置換の部分の処理にてエラーが発生しているのはわかっているのですが、 どのように修正を加えればよいのかがわかりません。 ご教授のほど、よろしくお願いします。 ----------------------------------------------------- Option Explicit Dim strValue ' 変換する文字列 Dim strBefore ' 変換前の文字列 Dim strAfter ' 変換後の文字列 strValue = Date() strBefore = "/" strAfter = " " Set wShell = CreateObject("WScript.Shell") Set oExecute = wShell.Exec(aiueo.bat Replace(Date() -1, strBefore, strAfter)) -----------------------------------------------------

  • VBSでバッチを実行できません。

    C:\temp\test.batをVBSで実行しようとするのですが、 何度やっても実行されません。 想像ですが、c:\WINNT\System32\cmd.exeが動いている ようなのですが、肝心のC:\temp\test.batが動きません。 以下のように記述しました。 Dim WshShell Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.Run ("cmd /c c:\temp\test,0,True") WIN2K、IE6.0の環境です。 どこか記述に誤りでもあるのでしょうか? どうぞよろしくお願いいたします。

  • 外部ファイルを実行するには?

    お世話になります。 vb6で外部のバッチファイルを起動して、それを動作させようとしているのですが、うまくいきません。特にエラーにはならず、一瞬DOSプロントは立ち上がるんですが、バッチ処理しているログにはなにも書き込まれません。普通にバッチファイルをダブルクリックさせるか、コマンドからバッチファイルの入っているフォルダまでいって、バッチファイルを実行すれば書き込まれるのですが。 どこがまちがっているのでしょうか?shellじゃなくて、違う関数を使わなければいけないのでしょうか?ご教授よろしくお願いします。 なお、vb6でテストするときは▸マークの実行を押して、テストしました。 サンプル用のものです。 ↓test 現在の時間をログに記入 ■バッチファイルの中身(test.bat) echo test >> log.txt time/t >> log.txt ■vb6のファイルの中身 Private Sub Command1_Click() Dim ret as long ret = shell("cmd.exe /c C:\test\test.bat",4) End Sub

  • VBSでバッチファイルを実行したときに

    VBSでbatファイルを起動したときに、 batファイルの実行が完了するまで、 「ただいま、処理中・・・」というような ダイアログボックスを表示し、処理完了後に そのダイアログボックスを消して、次処理へ いくようなスクリプトの記述の仕方がありまし たら教えてください。 よろしくお願いいたします。

  • VBScript(WScript)のバッチファイル実行

    お世話になります。 VBScriptで困っています。 ご存知の方、ご教示願えますでしょうか。 Windowsでバッチファイルを実行したときに、DOS画面(コマンドプロンプト)が一瞬パッて表示されるかと思います。 現在開発中のシステムで、プログラムからバッチファイルを自動で実行する処理を入れております。 通常ならばバッチファイルを実行した場合、DOS画面が表示されてしまいますが DOS画面を出さないようにプログラムを組んでいます。 つまり、VBScriptからバッチファイルを実行しております。 以下、VBScriptのソースを記載します。 Set objShell = WScript.CreateObject("WScript.Shell") fcresult = objShell.Run("C:\abc.bat", 0, True) wscript.quit fcresult 上記のVBSを実行すると、必然的に「abc.bat」が実行されます。 しかし、現在僕が使っている環境ですとDOS画面が表示されません(←これがやりたいこと) しかし、お客さんの環境で同じ様にVBSからバッチファイルを実行すると 「C:\WINDOWS\System32\CScript.exe」という名前でDOS画面が起動されてしまいます。 周りの環境でもVBSからバッチをたたくような処理を行ってみましたが、DOS画面が起動されず。。。 正直、再現が難しいため大変困っております。 お客さんの環境では100%再現されます。 全くもって原因がつかめておりません。 Windowsのセキュリティの設定でしょうか!? ご存知の方いらっしゃいましたら、知恵をお貸しください。 よろしくお願いいたします。

専門家に質問してみよう