- PR -

Windows2003server x64での秒単位sleep

1
投稿者投稿内容
エストレア
会議室デビュー日: 2006/11/30
投稿数: 15
投稿日時: 2006-12-18 09:28
おはようございます。いつも大変参考にさせていただいております。
最近,Widows2003server x64を導入したのでアプリケーションの動作確認を
している者です。現在、バッチファイルを作って50ms間隔でアプリーションを
起動させたいのですが、sleepコマンドが使えないようで作業が行き詰って
しまいました。

Windows2003server x64環境において秒単位でのsleepコマンドと同等の処理が
できる方法をご存知の方が居られましたらご教示頂けましたら幸いです。
よろしくお願いします。
チャブーン
大ベテラン
会議室デビュー日: 2006/11/25
投稿数: 149
投稿日時: 2006-12-19 12:00
チャブーンです。

プログラム等は調べていませんが、一番簡単なのは、WSH で sleep メソッドを使うことです。

Wscript.sleep [ミリ秒]

をスクリプトに入れれば、その時間で sleep してくれます。

http://msdn.microsoft.com/library/ja/script56/html/wsmthsleep.asp
まるちねす
ぬし
会議室デビュー日: 2004/04/28
投稿数: 302
投稿日時: 2006-12-19 16:55
http://www.microsoft.com/downloads/details.aspx?FamilyID=9d467a69-57ff-4ae7-96ee-b18c4790cffd&DisplayLang=en
2003 32bit 版のリソースキットを入手し、テストマシンにインストール
その中からsleep.exeを取り出してパスの通っているディレクトリにおくだけで
よいです。たとえばC:\windows など
実際、この方法でsleepしながら、バッチ処理を実行しています。
vbsは待機する秒が異なるごとにその数だけスクリプトを準備しなければいけないので
正直不便な場合があります。

2003 や XP の 64bit 版では32bitの実行ファイルがそのまま動作することが多いので
64bit 版がないソフトを使用しなければならない場合試してみる価値はあります。
ただ、ハードウェアにアクセスしたりするタイプのソフトでは
ドライバの問題で動作しないことが多いです。
チャブーン
大ベテラン
会議室デビュー日: 2006/11/25
投稿数: 149
投稿日時: 2006-12-19 18:49
チャブーンです。

> vbsは待機する秒が異なるごとにその数だけスクリプトを準備しなければいけないので
> 正直不便な場合があります。

ふむふむ。なるほど。

そういうことであれば、VBS をコマンドっぽく使う方法はどうでしょう。

----
set objAug = Wscript.Arguments
Wscript.sleep objAug(0)
----

これを sleep.vbs とでも保存して、したのようにコマンド実行するとか。

cscript //nologo sleep.vbs [ミリ秒]
エストレア
会議室デビュー日: 2006/11/30
投稿数: 15
投稿日時: 2006-12-28 16:54
ご教示いただいた皆様
色々とアドバイスありがとうございます。返事が遅くなりまして申し訳ありません。
ご質問させていただいたときは時間的に切羽詰っていましたので32bit環境のVS2005で
C言語の簡単なプログラムを作成して、x64用にコンパイルして使いました。

今後の勉強のために皆様から頂いた情報も時間を見つけて試したいと思います。
どうも、ありがとうございました。
特に必要ないかと思いますが、以下に私が場当たり的に作成したプログラムを貼って
おきます。

---------みっともないですがこんな感じです。
#include <stdio.h>
#include <windows.h>

int main(int argc, char *argv[]){
int count_time = 0;

//入力パラメータエラー処理
if(argc < 2){
printf("スリープさせる時間を入力してください。(ms)\\\\n %Sleep 500\\\\n");
}
//指定スリープ時間をintに変換
count_time = atoi(argv[1]);
//スリープ
Sleep(count_time);
}
------------------------
1

スキルアップ/キャリアアップ(JOB@IT)