バッチ処理でVMを終了、起動などさせると、バッチファイルの処理がそこで終了してしまい、その後の行が実行されない模様。
つまり、
・VM終了→xcopy→VM起動→7z圧縮
という1つのバッチファイルvmbackup.batを作ると、VM終了の部分で処理が終了してしまい、次のxcopy以下が走らない模様。
なんとかならないか試していたら、どうやらcallで飛ばしてしまえば継続処理可能な模様。
つまり、
・VM終了用のバッチvmbackup1.bat
・xcopy→VM起動のバッチvmbackup2.bat
・7z圧縮用のバッチvmbackup3.bat
を作っておき、
call vmbackup1.bat
call vmbackup2.bat
call vmbackup3.bat
という記述のvmbackup.batを作る。
このvmbackup.batを実行すれば、途中で終了せずに、vmbackup1.bat→vmbackup2.bat→vmbackup3.batと完走する。
VM処理の部分で切ってしまえばいいらしい。
vmbackup.batの内容を
call vmbackup1.bat > vmbackup_log.txt
call vmbackup2.bat >> vmbackup_log.txt
call vmbackup3.bat >> vmbackup_log.txt
というようにしておけば、ログの作成も出来る。
VM終了から7z圧縮まで稼動確認。あとは世代管理ローテーションができればバックアップが完成する。詳しい原理は知らないが、うまくいったからこれでいいや。