質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Android Debug Bridge(ADB)

Android Debug Bridge(ADB)は、接続された端末をAndroidエミュレータもしくはAndroidのインスタンスにアクセスに接続するためのツール。端末アクションをサポートし、様々なコマンドの実行の際に用いられるUnixシェルへのアクセスを提供します。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

Q&A

解決済

1回答

1391閲覧

バッチファイルで処理中に別の関数を実行したい

branch

総合スコア70

Android Debug Bridge(ADB)

Android Debug Bridge(ADB)は、接続された端末をAndroidエミュレータもしくはAndroidのインスタンスにアクセスに接続するためのツール。端末アクションをサポートし、様々なコマンドの実行の際に用いられるUnixシェルへのアクセスを提供します。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

0グッド

0クリップ

投稿2020/06/16 04:24

編集2020/06/17 05:34

前提・実現したいこと

初投稿失礼いたします.
バッチファイルで以下の機能(並列処理?)を実装したいのですが,
意図する挙動を実現できないため知恵をお貸しください.

android端末のコマンドによる操作です.以下a端末とします.
,が,バッチファイルのコマンド実行順序が本質的な問題かと思います.

  1. 時刻からファイル名を取得
  2. 録画(ここでは150秒)→a端末のsdcardというディレクトリに保存されます
  3. 録画で作成したsdcard/hoge.mp4をPCにコピー
  4. a端末上のsdcard/hoge.mp4を削除

上記の2.3.を実行中に次の録画を開始したいという内容です.

###現在のソースコード

bat

1@echo off 2cd /d %~dp0 3 4adb shell screenrecord --bit-rate 1000000 --verbose --verbose /sdcard/try.mp4 5adb shell rm *.mp4 6 7:loop 8 9rem ファイル名は時刻情報から取得 10set YYYYMMDD=%DATE:/=-% 11set HHMMSS=%TIME:~0,8% 12set HHMMSS=%HHMMSS::=-% 13set FILENAME=%YYYYMMDD%_%HHMMSS%.mp4 14 15rem 録画コマンド 16echo now recoding, dont shut this window plz 17adb shell screenrecord --time-limit 150 "/sdcard/%FILENAME%" 18echo saved %FILENAME% 19 20rem ファイル操作(a端末→PC) 21adb pull "/sdcard/%FILENAME%" "%~dp0%FILENAME%" 22adb shell rm "/sdcard/%FILENAME%" 23goto loop

試したこと

・録画コマンドにstart /bをつけると,pullが録画中に連続的に実行され,失敗します.
・pullとrmのみを記載した別のbatファイルを同じディレクトリに用意してcallしても結局は同じでした.(当たり前ですね)

補足情報

録画で150秒と指定しているのは端末側のスペック的な問題と,単純にmp4ファイルの容量肥大化を避けるためです.
また,ソースコード冒頭のtry.mp4関連の2行はadbで頻発するエラーを回避するためのおまじないのようなものです.
こちらを参考にしました

###願わくば...
上記に加えて[q]キー押下で録画を終了してpull,rmまで実行してから終了するようなエスケープコマンドも実装したいです...
こちらについてもよろしくお願いいたします.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

残念ですが、Windowsのバッチスクリプト一本で並列処理の記述は出来ません。
2つのスクリプトを用意して、StartコマンドやWaitforコマンドを駆使すれば…どうかな?いけるか?…って思うくらい難しいです
正直、実現性も極小で難易度高すぎるので、別の手法でのアプローチをお勧めします。

投稿2020/06/25 12:04

Takeda_Kazuhito

総合スコア379

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

branch

2020/06/25 22:04

ご回答ありがとうございます. やはりバッチでは難しいのですね,勉強になります. 安定性も低そうなのでpythonで,と思いましたがそもそもpythonの並列処理で速かった試しがないような...? 今回のスクリプトの処理はほとんどaTV側なので,一度色々と実験してみます. 最悪の場合は150秒まで録画を繰り返す→終了時にまとめてpull&rmという操作で対応しようかと思います. ありがとうございました.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問