![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
バッチ初心者です。ご教授下さい。
処理としては、特定のプロセスが存在すれば、再度5秒後にチェックして存在すればOKと表示。
としたいのですが。項番08で「0 の使い方が誤っています。」で落ちてしまいます。
ただ再チェックの項番13~20を外せば通ります。
XPで動かしています。
何が間違っているのでしょうか。宜しくお願いします。
01 @echo off
02 set tasktmp=C:\Temp\cnttmp.txt
03 set vbstmp=C:\Temp\vbstmp.vbs
04
05 tasklist | find /c "【何かプロセス】" > %tasktmp%
06 for /f %%a in (' type %tasktmp% ') do set cnttmp=%%a
07
08 if %cnttmp% neq 0 (
09
10 echo WScript.Sleep 5000 > %vbstmp%
11 cscript //NoLogo %vbstmp%
12
13 tasklist | find /c "【上と同じプロセス】" > %tasktmp%
14 for /f %%a in (' type %tasktmp% ') do set cnttmp=%%a
15
16 if %cnttmp% neq 0 (
17
18 echo OK
19
20 )
21 del %vbstmp%
22
23 )
24 del %tasktmp%
25 exit
No.1ベストアンサー
- 回答日時:
0の使い方が誤っていますというのはC:\Temp\cnttmp.txtの中身が想定外の物になっているのだと思います。
バッチファイルの多重起動などで同じファイルに同時にアクセスしてませんか?解決策ですが、文字列を含む行数との比較ではなく、
文字列を検索した結果のerrorlevelをみてはどうでしょうか。
中間ファイルを作らなくてよくなります。
05 tasklist | find /c "【何かプロセス】" > %tasktmp%
06 for /f %%a in (' type %tasktmp% ') do set cnttmp=%%a
07
08 if %cnttmp% neq 0 (
↓
tasklist |find "何かのプロセス" > NUL
if errorlevel 1 goto skip
echo WSciript.Sleep 5000 > %vbstmp%
…
:skip
exit
回答ありがとうございます。
errorlevel,goto で分枝させることで解決しました。
中間ファイルもなくなりシンプルに纏めることができました。
改めて見ると、ヘルプを見て解決できそうな質問でしたね。
恥ずかしい限りです。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Windowsのバッチファイルについてご教示ください 5 2023/07/25 20:23
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Windows 10 Windowsのバッチファイルで正規表現の置換方法について… 4 2022/12/09 16:00
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- Visual Basic(VBA) 形式を選択して貼り付け 以下のコードで「元」シートと「先」シートのA列に同じ値があったら指定範囲をコ 5 2022/11/11 07:30
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バックグラウンドのプロセスの...
-
別のプロセスの関数を呼び出す...
-
VB6.0 SHELLで起動...
-
プロセスのアタッチ・デタッチ...
-
explorer.exeが異様にメモリを食う
-
C#でのbatファイル実行結果取得
-
SendMessageが失敗するときがある
-
c言語でプロセスIDを調べたい
-
起動中のEXCELファイル(EXCEL...
-
セマフォとmutexの違いは?
-
他のEXEが起動しているかの確認
-
タスクマネージャーのプロセス...
-
バッチファイルでPINGログ取得
-
VB.NET 自プログラムのプロセス...
-
Windowsのユーザログイン/ログ...
-
シェルで親プロセス終了時に子...
-
Visual C++からpingを実行して...
-
UNIX_Cにおける「名前つきパイ...
-
非表示になったエクセルは?
-
C言語 特定のプロセスの終了を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バックグラウンドのプロセスの...
-
explorer.exeが異様にメモリを食う
-
タスクマネージャーのプロセス...
-
プロセスのアタッチ・デタッチ...
-
C#でのbatファイル実行結果取得
-
VB6.0 SHELLで起動...
-
ADOでアクセスのレコードに...
-
Windowsでのfork方法
-
非表示になったエクセルは?
-
共有メモリの同時アクセスにつ...
-
プロセスIDからウィンドウハ...
-
プロセスIDの取得方法について
-
C++でシェルを起動
-
C++のプログラムをバックグラウ...
-
Linuxでのスレッド間メッセージ...
-
OSPFでプロセスを分ける意義に...
-
怪しいプロセス教えてください。
-
Process.Startの戻り値を後で取得
-
SendMessageが失敗するときがある
-
ウィンドウのタイトルからプロ...
おすすめ情報