• ベストアンサー

指定した時間にEXEを起動。

現在、バッチファイルで指定した時間にEXEを起動させようと思っています。 実際EXEはATを使用して指定時間に起動されるのですが、EXEが出力するログファイルが「WINNT」→「system32」内に出力されてしまいます。どうしてでしょうか? 環境は「Windows2000(SP4),VC6.0」です。 お分かりの方がいらっしゃれば、ご教授願います。

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

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

以下のコードで 実行exe モジュールのフルパスが得られます。 ここからモジュール名を削ってディレクトリを取得すれば常に exe モジュールと同じディレクトリにログファイルを出力するようにできますよ。 char buf[256]; memset(buf, 0, sizeof(buf)); ::GetModuleFileName(NULL, buf, sizeof(buf)-1);

harunaruna
質問者

お礼

回答ありがとうございます。 GetModuleFileNameでフルパス取れました!! ありがとうございます。助かりました。 今後とも宜しくお願いします。

その他の回答 (2)

  • yruri
  • ベストアンサー率63% (7/11)
回答No.2

ある程度プログラミングの心得があれば参考URLの方法が汎用性もあっていいですよ。 また他の方法ではバッチでなくC言語か何かでそのEXEを起動するようにしららどうでしょうか? exp). #include <stdio.h> #include <process.h> #include <direct.h> #include <string.h> void main(){ char szPath[MAX_PATH]; getcwd(szPath, sizeof(szPath)); strcat(szPath, "\\ファイル名.exe"); system(szPath); } かな? 検証はしてませんが、これをEXEと同じフォルダに格納してタスクか何かで実行すればどうでしょうか?

参考URL:
http://forum.nifty.com/fpcu/top/doslog02/0760.htm
harunaruna
質問者

お礼

回答ありがとうございます。 バッチ以外での起動を試してみましたが、やはりパスは「\WINNT\system32」でした。 URL、ありがとうございます。参考にさせてもらいます。

  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.1

ATコマンドがSystem32フォルダ内にあるからだと思われます。 ログファイルの出力が相対パスで指定されているため、作業ディレクトリに出力されるのでしょう。 ログファイルの出力指定ができるのなら絶対パス指定にして、できないのなら他に手を考えるしかないですね。

harunaruna
質問者

お礼

回答ありがとうございます。 たしかに絶対パスでログを出力すれば可能でした。 しかし、このEXEは汎用性を持たせるために絶対パスは 指定できないんです・・・・。(INIファイルでパス指定) 困りました。他の手を考えてみます。 ありがとうございます。

関連するQ&A

  • exeの起動

    javaから***.exeを起動させているのですが、 作業ディレクトリを指定したいため、下記のメソッドを使っています。 exec(String[] cmdarray, String[] envp, File dir) Fileを設定すると、エラーになってしまうのですが・・・。 どうしたらよいのか分かりません。よろしくお願いします。 環境は、winNT、jdk1.3.1です。

  • EXEの起動について

    プログラムの連続起動をバッチファイルで作成しています。 本体(A.EXE)を連続起動させるべくfor文でテキストファイルを読み込み引数を与えながら起動して、ということをしたいのですが、A.EXEは自動で終了するもののワケあって終了した状態を取得できません。 そこで監視(B.EXE)を実行してA.EXEの終了を待つプログラムを用意しました。 for文の中でA.EXE起動→5秒待ち→B.EXE起動(バッチは待ち状態)→A.EXE終了→B.EXE終了(バッチ待ち解除)→2回目のA.EXE起動…という流れを想定していますが、B.EXEが待ち状態にならずA.EXEが実行されてしまいます。 バッチの中身をコマンドプロンプトで実行するとB.EXEは待ち状態となるのですがバッチ実行すると待ち状態になりません。 なにが原因かわからず質問いたしました。 ご助力いただけると助かります。 以下はバッチ内容です(for文は除きます)。 ----------------- start C:\work\A.EXE timeout 5 start /w C:\work\B.EXE ----------------- よろしくお願いします。

  • VTTray.exeってなんでしょうか?

    C:\winnt\VTTray.exeというファイルを誤って消してしまいました。 それ以降、起動時に、 「C:\winnt\VTTray.exe 指定パスにアクセスできません。」 といったエラーが表示されます。 このファイルは消してしまってはまずいものだったのでしょうか? 復旧方法などはありますでしょうか?

  • パフォーマンスモニタをバッチで実行

    NT初心者です。どうぞよろしくお願いします。 NT4.0サーバの稼動中、パフォーマンスモニタを5分間隔で動かし、 結果を一つのログに書き出したいのです。 定時起動をするにはATコマンドがあるということは調べたのですが、 実際のコマンドの記述がまったくわかりません。 ↓このようなかんじかと思うんですが…  AT 00:00 /NEXT: c:\winnt\system32\prefmon.exe  AT 00:05 /NEXT: c:\winnt\system32\prefmon.exe 良い方法がありましたらご教授お願いします。

  • ローカルのHTMLからexeファイルを起動したい

    とあるシステム?の修正を頼まれています。 現在の仕様は以下になります。 1)CD内にFlashで作成したexeファイル自動実行。 2) 1)のメニュー内のボタンを押すと、同じCD内にあるexeファイルを起動する。 3)CD内にはhtmlファイルや画像等のコンテンツもあり、それらも1)のメニュー内から起動可能。 この1)をHTMLで作成したいのですが、2)のローカル内にあるexeを起動させることは可能なのでしょうか?試してみたところ、警告ダイアログ等が出てしまいます。PC初心者も対象にしているものなので、できれば一発で起動できるようにしたいです。 やはりVC++等でexeファイルを作成しないとダメでしょうか? 自分が扱えるのはHTML、PHP、Javascript、Java、VBなので、できればこの中で作成出来ればいいのですが…。 ご教授お願いします。

  • バッチファイル 時間指定

    バッチファイルをスタートアップに入れています。 手軽で便利なのですが、起動するたびに出てしまうので、if文か何かを使って、前回の実行してから12時間経っていない場合はバッチファイルを終了させるようにできないでしょうか。 robocopyを使ったバッチで、オプションでログを作成するようにしています。そのテキストファイルの作成時間で12時間経っているかどうか判断できればと思っています。

  • html上で、バッチやexeファイルの起動をしたい

    わけあって、学校(養護学校)初心者向けにhtmlでメニューを作っています。 さて、スタートボタンやディスクトップにショートカットを使わず、htmlの中からバッチファイルやexeファイルを起動できるでしょうか? もし可能ならば、教えてください。OSはWindows XPで起動したいファイルはexeファイルとバッチファイルです。 よろしくお願いします。

  • ブラウザからEXEを起動するには2

    「VBで作成したEXEファイルをブラウザから起動したいのですが、 うまく行きません。お知恵を拝借させてください。 」 と、いうような投稿を少し前にした者です。 説明不足でなんとも申し訳なかったのですが、 ちゃんと追記しますと、 「サーバー上のEXEファイルをクライアントがブラウザのリンクから  クライアント上に立ち上げるのはどうすればよいでしょうか」 ということでした。 以下、チャレンジしたことです。 1.EXEを起動させるバッチファイルを書いてそれにリンクをする。 →起動時に確認のポップアップが出てきて鬱陶しい →バッチウィンドウがプログラムを閉じるまで閉じない 2.ASPでbobj.Executeを利用して立ち上げる →見事に起動。ただしサーバー上で。 何かうまい方法があったら何卒よろしくお願いします。

  • ショートカットでexeを起動しているが、バッチファイルで同じ事ができないか?

    いつも参考にさせていただいています。 サーバーの共有フォルダに、EXEファイル(aaa.exe)があり、 それを実行するショートカットがクライアントに準備してあります。 このショートカットでは、 ・リンク先 ・作業フォルダ の指定をしています。 今までは、クライアント機の起動時に、サーバーの共有フォルダにネットワークドライブを割り当てていましたが、 バッチファイルで割り当て、プログラム終了と同時にバッチで切断しようと思い立ちました。 そこで、まず、    net use L: \\Server\L という内容のバッチファイルを作成し、ネットワークドライブの割り当ては成功しました。 次に、このバッチファイルに、aaa.exeを起動させるコマンドを記述したいのですが、    call L:\Test\aaa.exe でできそうですが、作業フォルダの指定をどのようにするのかが分かりません。 callのほかに、startというコマンドもありましたが、 こちらでもできるのでしょうか? それと、net useで割り当てた、サーバのLドライブですが、本当はL$で共有フォルダの指定をしたかった(=他のパソコンからは容易に見れないように)のですが、 L$にするとnet use で割り当てできませんでした。 他の方法があるのでしょうか? 質問攻めで申し訳ありませんが、どうかご教授よろしくお願いいたします。

  • 突然、起動しなくなりました!!

    「次のファイルが存在しないかまたは壊れているため  Windowsを起動できませんでした  <winnt root>\system32\ntoskrnl.exe. 」  となってしまい、何度繰り返しても  起動しなくなってしまいました。    なぜでしょうか?

専門家に質問してみよう