
【bat】備忘録 〜バッチ操作〜
こんにちは!
今日はバッチファイルを使った操作をまとめようと思います。
せっかくなので少し基本的な事もまとめながらいきたいと思います。
バッチファイルとは
Windows環境下で動くファイルです。シェルに実行させたいものをテキストで定義しているものです。
他のプログラミング言語と違ってWindows環境下であれば特に環境構築せずに使えます。
(もちろん、バッチからPythonを実行する等の操作をするのであればPython環境が必要です。)
よく使うコマンドと操作
# テキストを画面へ出力
echo HELLO WORLD
# 環境変数を画面へ出力
echo %PATH%
echoは文字列表示で使うコマンドです。
# テキストの画面出力をdisable
@echo off
このコマンドは、それより下のテキストに対して画面出力をしない、というものです。定義しないといっぱい画面に処理中のテキストが出てきてしまうので、よくバッチファイルの頭にコレを定義してます。
あと改行は下記ですね。
# 改行
echo.
if文の書き方
# 条件の定義
set condition = XXX
if %condition% == XXX (
xxxx // 処理の定義
) else if %condition% == YYY (
yyy // 処理の定義
) else (
zzz // 処理の定義
)
for文の書き方
例1) ディレクトリ内の対象ファイルへ処理を繰り返す
@echo off
# 対象のディレクトリの定義
set TargetDir = DIRECTORY_PATH
# 対象のファイルの定義
set TargetFile = *.txt
# 処理の実行
for /r “%TargetDir%\“ %%a in (“%TargetFile%”) do (
// 処理を定義。
)
echo.
pause
exit
例2) 値を変化させながら繰り返す
# 開始の値:1,ステップ数:3,終了する値:10
for /l %%n in (1,3,10) do (
// 処理を定義。%%nが現在のカウント数。
)
例3) 指定のファイル分繰り返す
# 定義されたファイルへ繰り返し
for %%n in (file1.txt file2.txt file3txt) do (
// 処理を定義
)
# 特定の拡張子へ繰り返し
for %%f in (*.txt) do (
// 処理を定義。%%fが*.txtを代入した変数。
)
# サブディレクトリも含めて繰り返し
for /r c:\test %%f in (*.txt) do (
// 処理を定義。%%fが*.txtを代入した変数。
)
引数の受け取り方
引数を受け取る定義をしておいて、外部からバッチを呼ぶときに引数を渡せば実行できます。
例) ファイルコピーをする場合
# バッチ名 copy.bat
@echo off
echo.
# 第一引数
set arg1=%1
# 第二引数
set arg2=%2
# ファイルをコピー
copy %arg1% %arg2%
echo.
pause
exit
上記のバッチを、下記のように外部から呼び出す
call ./DIRECTORY_A/copy.bat ./DIRECTORY_B/FileA.txt D:/DIRECTORY_B/File_C.txt
時間の取得
# timeに現時刻を代入
set time=%date% %time%
環境変数一覧
COMPUTERNAME // PC名
HOMEDRIVE // ホームドライブ(C:)
HOMEPATH // ユーザーパス(C:/Users/XXX(ユーザー名))
USERNAME // ユーザーパス(C:/Users/XXX(ユーザー名))
PATH // パス
# 全ての環境変数の表示
set
# 該当する頭文字を指定して環境変数の表示
set XXX
とりあえず、こんなものでしょうかね。なんだか自分にとっては結構整理出来たのでスッキリしました!
下記のサイトを参考に書きました。
作成者の皆様ありがとうございました。