回答編集履歴

1

回答追記

2023/08/23 15:25

投稿

otn
otn

スコア86295

test CHANGED
@@ -8,8 +8,6 @@
8
8
  start cmd /c "timeout /T 10 /NOBREAK & call B.bat"
9
9
  ```
10
10
 
11
-
12
-
13
11
  > ・A.batの処理は5秒ごと処理を実行
14
12
  > ・B.batの処理はA.batの処理を止めずに10秒ごとに処理を実行
15
13
  だと内容が不明です。
@@ -17,4 +15,28 @@
17
15
  「10秒ごとに処理を実行」と、お書きのコードの「Aから起動されて10秒待って処理」との関係は?
18
16
  など。
19
17
 
18
+ ## 追記
19
+ `timeout`コマンドだと1秒未満待つことは出来ないですが、他の手段で1秒未満待てばこういう手もありますね。
20
+ (手元の環境だと`Sleep 200`をcscriptコマンドで起動すると0.3秒くらい待ちます)
21
+ Aの処理を5秒ごとに実行したいと言う以上、Aの処理が5秒を超えることは死んでもあり得ないのでしょうが、5秒ぎりぎりになると厳しいですね。その場合は、コメントに書いたような方法しか無いでしょう。
20
22
 
23
+ 現在時刻の秒の1の位が0ならB.BATを起動して、5で割った余りが0ならAの処理をする。
24
+ 「N秒ごとに」のNが60の約数なら同様に出来ます。
25
+ ```CMD
26
+ @echo off
27
+ echo WScript.Sleep 200 > $$$.vbs
28
+
29
+ :MAINLOOP
30
+ set S=%TIME:~7,1%
31
+ if %S%==0 start B.BAT
32
+ set /a S5=S %% 5
33
+ if %S5%==0 call :AAAAA
34
+ :SAMESECOND
35
+ cscript $$$.vbs
36
+ if %S%==%TIME:~7,1% goto SAMESECOND
37
+ goto MAINLOOP1
38
+
39
+ :AAAAA
40
+ A固有の処理
41
+ ```
42
+