質問: ### 前提・実現したいこと 初投稿失礼いたします. バッチファイルで以下の機能(並列処理?)を実装したいのですが, 意図する挙動を実現できないため知恵をお貸しください. android端末のコマンドによる操作です.以下a端末とします. ,が,バッチファイルのコマンド実行順序が本質的な問題かと思います. 1. 時刻からファイル名を取得 2. 録画(ここでは150秒)→a端末のsdcardというディレクトリに保存されます 3. 録画で作成したsdcard/hoge.mp4をPCにコピー 4. a端末上のsdcard/hoge.mp4を削除 上記の2.3.を実行中に次の録画を開始したいという内容です. ### 現在のソースコード ``` @echo off cd /d %~dp0 adb shell screenrecord --bit-rate 1000000 --verbose --verbose /sdcard/try.mp4 adb shell rm *.mp4 :loop rem ファイル名は時刻情報から取得 set YYYYMMDD=%DATE:/=-% set HHMMSS=%TIME:~0,8% set HHMMSS=%HHMMSS::=-% set FILENAME=%YYYYMMDD%_%HHMMSS%.mp4 rem 録画コマンド echo now recoding, dont shut this window plz adb shell screenrecord --time-limit 150 "/sdcard/%FILENAME%" echo saved %FILENAME% rem ファイル操作(a端末→PC) adb pull "/sdcard/%FILENAME%" "%~dp0%FILENAME%" adb shell rm "/sdcard/%FILENAME%" goto loop ``` ### 試したこと ・録画コマンドにstart /bをつけると,pullが録画中に連続的に実行され,失敗します. ・pullとrmのみを記載した別のbatファイルを同じディレクトリに用意してcallしても結局は同じでした.(当たり前ですね) ### 補足情報 録画で150秒と指定しているのは端末側のスペック的な問題と,単純にmp4ファイルの容量肥大化を避けるためです. また,ソースコード冒頭のtry.mp4関連の2行はadbで頻発するエラーを回避するためのおまじないのようなものです. こちらを参考にしました ### 願わくば... 上記に加えて[q]キー押下で録画を終了してpull,rmまで実行してから終了するようなエスケープコマンドも実装したいです... こちらについてもよろしくお願いいたします.
回答: 残念ですが、Windowsのバッチスクリプト一本で並列処理の記述は出来ません。 2つのスクリプトを用意して、StartコマンドやWaitforコマンドを駆使すれば...どうかな?いけるか?...って思うくらい難しいです 正直、実現性も極小で難易度高すぎるので、別の手法でのアプローチをお勧めします。