プロが教えるわが家の防犯対策術!

一連のプログラムかバッチを一定の間隔で順番に起動し、一通り起動しおわったら最初に戻って同じことを繰り返すソフトを探しています。
例えばプログラム1、プログラム2、プログラム3と3つのプログラムがあり10分間隔で順に起動。プログラム3を起動したら次に起動するのはプログラム1に戻るといった具合です。
よろしくお願いします。

A 回答 (3件)

さて、2000やXPならタスクスケジューラを使うと、あるコマンドの定期実行を行うことができます。


指定時刻だけではなく、一定時間毎起動等も可能です。

これを使って、以下のようなバッチファイルを起動することで、毎回コマンドが切り替わるようになります。
インデントがつかないので、適当に整形して使ってください。
不明な点があれば、補足でよろしく。

#################################
@echo off

REM ---------------------------------
REM 順次実行サンプルバッチ
REM ---------------------------------
setlocal & pushd & set RET=

REM ---------------------------------
REM パラメータ設定
REM ---------------------------------

REM 次回実行コマンド記述ファイル
set NEXTCMDFILE=C:\nextcmd.txt
REM 実行するコマンド郡
set CMD1=call c:\tools\cmd1.bat
set CMD2=c:\tools\cmd2.exe
set CMD3=c:\tools\cmd3.exe

set SCRIPTNAME=%~n0

REM メインルーチン呼び出し

call :MAIN %*

:exit
popd & endlocal & set RET=%RET%
goto :EOF

REM ----------------------------------
REM メインルーチン
:MAIN

REM ファイルが存在しない場合は初期値で作成
IF NOT EXIST %NEXTCMDFILE% (
echo %CMD1%> %NEXTCMDFILE%
)

REM ファイルの中身を確認し、記述されているコマンドをそのまま実行する。
REM 終わったら、次のコマンド文字列を格納する。
FOR /F "tokens=*" %%A IN ('TYPE %NEXTCMDFILE%') DO (
IF "%%A" == "%CMD1%" (
%CMD1%
echo %CMD2%> %NEXTCMDFILE%
) ELSE IF "%%A" == "%CMD2%" (
%CMD2%
echo %CMD3%> %NEXTCMDFILE%
) ELSE IF "%%A" == "%CMD3%" (
%CMD3%
echo %CMD1%> %NEXTCMDFILE%
)
)

goto :EOF
REM ----------------------------------
    • good
    • 0
この回答へのお礼

なるほどタスクスケジューラを併用する事は見落としてました。それに気づきさえすれば後は大したこと無いんですよね。タスクスケジューラで起動するa.batを、以下のようにして起動のたびに動的に書き換えてやればb1~b3.batをローテーションできますから。

[a.batの中身(の初期状態)]
b1.bat

[b1.batの中身]
echo b2.bat > a.bat
REM 以下に目的の処理を記述


[b2.batの中身]
echo b3.bat > a.bat
REM 以下に目的の処理を記述


[b3.batの中身]
echo b1.bat > a.bat
REM 以下に目的の処理を記述

てな具合です

ありがとうございました。

お礼日時:2005/05/02 18:27

連番バッチファイルを一定間隔でローテーション起動


自動繰り返しランチャー ARL(Automatic Rotation Launcer)
http://members.jcom.home.ne.jp/takexx/cntnt/arl. …
というのはいかがでしょうか。

元々フリーのライブカメラソフト「LiveCapture2」のエクステンション的な目的で作られたソフトですが実際には完全に汎用で「LiveCapture2」無しで使えます。

コマンドライン引数で起動時に実行間隔、通し番号の数、実行ファイル名を指定したり、運用中にイレギュラーに実行したり、停止したりと柔軟に運用できます。
OSのスケジューラでも同様のことは出来ますが、こちらの方が簡単だと思います。
ただし、起動対象はファイル名末尾が連番のバッチファイルだけです。

参考URL:http://members.jcom.home.ne.jp/takexx/cntnt/arl. …
    • good
    • 0
この回答へのお礼

探せばあるんですね。これは使いやすそうです。
有名なソフトは利用者が活用ツールを作っているケースがありますから案外穴場かもしれませんね。
ありがとうございました。

お礼日時:2005/05/02 18:29

およそ半年ぶりくらいの回答ですが・・・。


OS等の制約事項が何も指定されていないので、誰も何も回答のしようがなさそうです。
しかし、UNIX系のOSでもWindows系のOSでも、スクリプトひとつかけば、どうにでもなる問題とは思います。

この回答への補足

OSはWindows2000とXPです。起動対象のプログラムは起動だけすれば勝手に処理して終了するタイプで他のプログラムとの同期を考慮する必要はありません。

>スクリプトひとつかけば、どうにでもなる問題
とのことですが、私はMS-DOSのV2のころからバッチは使っていましたのでそれなりに知識はあるつもりです。
が「一定時間の間隔で・・・・」のあたりが思いつきません。
具体的にご教示いただければ助かります。

補足日時:2005/04/29 17:15
    • good
    • 0
この回答へのお礼

ありがとうございます。質問を投稿した後でOS等を書き忘れたのに気づいたのですが修正はできず、誰かが書いてくれないと補足もできないので困っていました。

お礼日時:2005/04/29 17:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!