こんにちは、うしまるです。
本日はバッチ処理に関する記事となります。
わかってしまえば簡単だったのですがハマりにハマってしまったので
備忘録的に記録したいと思います。
やりたいこと!
バッチ処理でユーザーアカウント制御の認証結果をもとに処理を分岐させたい
背景
開発中のソフトウェアが本番環境へデータを自動送信する機能がついたので、開発環境でデバックしようとするとまさかの本番環境への自動送信が動く事態に。
急遽対策用としてお客様からデータを送らないようにするバッチが送られてきたのですが、毎回それを叩いてからデバックするのはめんどくさいということでバッチでソフトの起動前に強制的にバッチを起動するバッチを作成することになりました。
実装
main.bat
sub.bat
echo subバッチ起動
pause
pause
処理の概要
1.管理者権限でsub.batを起動しようとする
2.ユーザアカウント制御画面が起動する
3.ユーザアカウント制御で「はい」を選択するとsub.batが管理者として実行されはい側の処理へ遷移する
4.ユーザアカウント制御で「いいえ」を選択するとsub.batは実行されずにいいえ側の分岐へ遷移する
割と簡単に出来たのですがここまでたどり着くのが長かった。。。
rem 管理者権限でバッチを起動しようとする
call powershell start-process sub.bat -verb runas
rem ユーザーアカウント制御結果で処理を判断
if %errorlevel% neq 0 (
echo ユーザーアカウント制御画面で「いいえ」を押下
echo ここに処理を書く
pause
) else (
echo ユーザアカウント制御画面で「はい」を
echo ここに処理を書く
pause
)