- ベストアンサー
指定した時間にEXEを起動。
現在、バッチファイルで指定した時間にEXEを起動させようと思っています。 実際EXEはATを使用して指定時間に起動されるのですが、EXEが出力するログファイルが「WINNT」→「system32」内に出力されてしまいます。どうしてでしょうか? 環境は「Windows2000(SP4),VC6.0」です。 お分かりの方がいらっしゃれば、ご教授願います。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
以下のコードで 実行exe モジュールのフルパスが得られます。 ここからモジュール名を削ってディレクトリを取得すれば常に exe モジュールと同じディレクトリにログファイルを出力するようにできますよ。 char buf[256]; memset(buf, 0, sizeof(buf)); ::GetModuleFileName(NULL, buf, sizeof(buf)-1);
その他の回答 (2)
- yruri
- ベストアンサー率63% (7/11)
ある程度プログラミングの心得があれば参考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と同じフォルダに格納してタスクか何かで実行すればどうでしょうか?
お礼
回答ありがとうございます。 バッチ以外での起動を試してみましたが、やはりパスは「\WINNT\system32」でした。 URL、ありがとうございます。参考にさせてもらいます。
- Bonjin
- ベストアンサー率43% (418/971)
ATコマンドがSystem32フォルダ内にあるからだと思われます。 ログファイルの出力が相対パスで指定されているため、作業ディレクトリに出力されるのでしょう。 ログファイルの出力指定ができるのなら絶対パス指定にして、できないのなら他に手を考えるしかないですね。
お礼
回答ありがとうございます。 たしかに絶対パスでログを出力すれば可能でした。 しかし、このEXEは汎用性を持たせるために絶対パスは 指定できないんです・・・・。(INIファイルでパス指定) 困りました。他の手を考えてみます。 ありがとうございます。
お礼
回答ありがとうございます。 GetModuleFileNameでフルパス取れました!! ありがとうございます。助かりました。 今後とも宜しくお願いします。