バッチファイル

投稿者: | 2022-12-27

目次

バッチファイル

  • 拡張子 .bat
  • 文字コードは Sheft_JIS で保存する(でないと echo などで日本語表示が文字化けする)
  • バッチファイルの置いてあるディレクトリがカレントディレクトリになる
@echo off

rem コメントです

echo test1.batです。

pause
exit


rem ↑ここは「timeout /t 3」(3秒後に画面を閉じる)でもよい
Shift-JISで保存した場合
UTF-8だと文字化け
  • echo
    • その行の文字列を画面に表示する
    • ただし、デフォルトでエコー機能はONになっているので付けなくても表示される
    • その行だけを非表示にしたい場合は@を先頭につければよい
  • @echo off
    • 上記のとおり、デフォルトでは文字列がそのまま画面に表示される(下図)
    • 各行頭に@を書けば表示されなくなるがそれも大変。そこで「echo off」を書くとそれ以降のコマンドは非表示になる
    • 「echo off」も表示されるので、先頭に@をつけて非表示にする
@echo off がないとコマンドがすべて表示されてしまう
  • rem
    • コメント
  • pause
    • bat処理が終わるとすぐに画面は閉じてしまう。表示したい場合は一時停止できる
    • 「続行するには何かキーを教えてください…」が表示される
  • exit
    • バッチを終了する。なくても閉じられるが明示的に終了させる

変数と環境変数

@echo off

set val_date=変数その1
set val_time=変数その2

echo %val_date%
echo %val_time%

rem 環境変数からWindowsのシステム日時を取得
set val_date=%date%
set val_time=%time%
echo %val_date%
echo %val_time%

pause
exit

pythonファイルを実行する

Pythonファイルをバッチファイル(.bat)から実行する方法 – なろう分析記録 (hatenablog.com)

  • バッチ内でPythonを実行するには「 @py.exe pyファイルへのパス」
  • py.exe を使えばパスが通っているかどうか悩まなくてもよい
  • py.exe は Pythonランチャー(py.exe)のこと(詳しくはココ
  • パスは「” “」で囲まなくてもよい(囲んでもよい)
@echo off
@py.exe C:\Users\~\test.py
pause
exit
  • ただし、コマンドプロンプトの画面を表示し、引数を受け渡す、入力を待つなどの操作はバッチを使わずとも、.pyファイルをWクリックなどして実行しても同じようにできる
  • バッチを使うメリットは次のとおり

バッチから「.py」を起動するメリット

  • 処理終了後にウィンドウが閉じないように設定できる。
  • 別々の.pyファイルを扱える。
  • タスクスケジューラから実行しやすくなる。
  • 特定のファイルを指定してダブルクリックで実行する

バッチからD&Dで.pyを実行

  • 引数は %1でよい。ドラッグアンドドロップされたファイルのPATHが代入される
@py.exe C:\Users\~\test.py %1
pause

複数のファイルを同時にD&Dで実行するバッチ

for %%i in (%*) do (
C:\Users\~\test.py %%i
)
pause