目次
検証環境
- Windows 10 Pro 64bit (22H2)
- Windows 11 Pro (23H2)
バッチファイル(.bat)の書き方サンプル
よく書き方を忘れるので、自分が良く使うバッチファイルの書き方をここにメモっておく
コマンド丸見え防ぐ&カレントディレクトリをBATと同じ場所に
だいたいのバッチファイルの頭に付けとけば良いと思います
コマンドが丸見えになるのを防ぐ「@echo off」
カレントディレクトリをバッチファイルと同じ場所にする「cd /d %~dp0」
@echo off
cd /d %~dp0
一時停止
コマンドの実行を停止します、何かキーを押すと進みます
pause
画面に文字を表示
「@echo off」でコマンドを非表示にしていても
「ECHO」コマンドで指定した文字列は表示されます
下記であれば「ねこ大好き」と表示されます
@echo off
ECHO ねこ大好き
バッチファイルの実行を終了する
バッチファイルの実行をここで終了します
通常のgotoだと飛び先として同じ名前のラベルの配置が必要ですが、これはラベルが不要です
goto :eof
バッチファイルにドラッグ&ドロップした複数ファイル処理ループ
このバッチファイルにファイルをドラッグ&ドロップすると、そのファイルの数だけループが回ります
以下の例ではループ内の「echo %%q」により複数のフルパスファイル名が並んで表示されます
「%%q」変数にフルパスファイル名が入ります
ファイル名・フォルダー名に半角スペースが含まれている場合は「"」で囲われます
@echo off
cd /d %~dp0
for %%q in (%*) do (
echo %%q
)
pause
管理者権限で実行しているかチェック
バッチファイルが管理者権限で実行されてるかどうかをチェックします
管理者権限が必要なバッチファイルの頭に付けると良いでしょう
@echo off
cd /d %~dp0
for /f "tokens=1 delims=," %%i in ('whoami /groups /FO CSV /NH') do (
if "%%~i"=="BUILTIN\Administrators" set ADMIN=yes
if "%%~i"=="Mandatory Label\High Mandatory Level" set ELEVATED=yes
)
if "%ADMIN%" neq "yes" (
echo 管理者権限で実行されていません
echo バッチファイルの実行を停止します
pause
goto :eof
)
if "%ELEVATED%" neq "yes" (
echo 管理者権限で実行されていません
echo バッチファイルの実行を停止します
pause
goto :eof
)
echo 管理者権限で実行されています
pause
トラックバック URL
https://moondoldo.com/wordpress/wp-trackback.php?p=9675