bat
「bat」とは、野球やクリケットなどのスポーツ用具であるバットのことを意味する表現である。
「bat」とは・「bat」の意味
「bat」は、名詞と動詞で使われる単語である。名詞では野球やクリケットなどのスポーツで打者がボールを打つための「バット」を意味する他、これらのスポーツから派生したコークボールやペサパッロなどの競技でボールを打つ道具もバットと呼ぶ。動詞としても「打つ」というスポーツ関連で使われることが多く、例文としては「bat the ball(ボールを打つ)」のような表現となる。また、batは同音異義語として動物の「コウモリ」を意味する単語でもある。コウモリはその顔がキツネに似ていることから「flying fox(飛ぶキツネ)」という別称もあるが、batは一般的に見られる小さいコウモリを指す場合に使う単語で、flying foxは両翼を広げると1mを超えるような熱帯地方に生息している大型コウモリを指すことが多い。
なお、batにはスラングとして「気が触れる」「イカレた」のような意味もある。これは古い言い回しの「鐘楼のコウモリ(bats in the belfry)」が元で、教会の屋根の上にある鐘を人の頭に例え、鐘の中で外に出られず飛び回っているコウモリのように、頭の中が混乱した状態を表わしている。「He's bat.(彼はイカレている)」のように使う。
「bat」の発音・読み方
「bat」の発音記号は「bǽt」で、「ǽ」は「ア」と「エ」の中間音で口を広げながら「ア」と発音する。「t」は「ト」で打ち切るのではなく語尾に小さい「ゥ」が付く感じになるため、発音すると「バァト(ゥ)」のように聞こえる。カタカナ表記では「バット」。「bat」の語源・由来
「bat」の語源はインドヨーロッパ祖語で「打ち付ける」を意味する「*bhat-」で、ラテン語の「叩く」を意味する「battuere」に変化し、古英語「batt」を経てbatとなった。「bat」を含む英熟語・英語表現
「right off the bat」とは
ネイティブ間でよく使われるフレーズで、「即座に」や「直ちに」を意味する表現。バットに当てたボールはすぐにバットを離れることを表わしており、「We hit it off right off the bat.(私たちはすぐに意気投合した)」のように使う。ニュアンスと使い方は「immediately」同じ。
「do not bat an eye」とは
「びくともしない」「動揺した様子がない」を意味する表現で、話し言葉でよく使われるフレーズ。「He didn’t bat an eye.(彼は顔色ひとつ変えなかった)」のような表現となる。
「bat」に関連する用語の解説
「Batファイル」とは
MS-DOS環境において、実行させたい複数のコマンドをひとつにまとめたテキストファイルのこと。ファイル拡張子が「.bat」なので「batファイル」と呼ぶが、読み方は「バッチファイル」が一般的。
「bat (中国企業)」とは
中国のIT業界で大きな影響力を持つ3社「Baidu(バイドゥ:百度)」「Alibaba(アリババ:阿里巴巴集団)」「Tencent(テンセント:騰訊)」の頭文字を取った名前のこと。アメリカの大手IT企業を指すGAFA(Google・Amazon・Facebook・Apple)に対抗して命名された。
「bat(仮想通貨)」とは
2020年に上場した、Webブラウザ「Brave」上で使用される仮想通貨のこと。「Basic Attention Token」の略称。Web広告を活用するなど、従来の仮想通貨とは異なる特徴を持っている。
「British American Tobacco Japan(タバコの会社名)」とは
世界的に人気のタバコ「ケント」や「ラッキーストライク」「ダンヒル」などを扱うイギリス企業「British American Tobacco」の日本法人のこと。
「BAT」の略とは
頭文字が「B・A・T」になる、さまざまな定義のこと。企業などの環境対策基準である利用可能な最善の手法(Best Available Technology)や、イギリス領南極地域(British Antarctic Territory)、血中アルコール検査(Blood Alcohol Test)など、さまざまな意味の略語がある。
「bat」の使い方・例文
「bat」はスポーツに関連した「バット」や「打つ」の意味として使われることが多い単語である。例文としては「You need a bat and ball to play baseball.(野球をするにはバットとボールが必要だ)」、「He is the next at bat.(次に打つのは彼だ)」のような表現となる。バット【bat】
バット【bat】
バット【Bat】
読み方:ばっと
オマーン北部、アフダル山西麓にある遺跡。青銅器時代に銅の採掘で栄え、遠くメソポタミアまで輸出していたと考えられている。直径20メートル、高さ10メートルという五つの巨大な塔が発掘されたが、その目的などはわかっていない。周辺のアルフトゥム、アルアインの遺跡とともに、1988年に世界遺産(文化遺産)に登録された。
バット【BAT】
読み方:ばっと
《Baidu, Alibaba, Tencent》中国に本拠を置く、インターネット関連企業の最大手3社の通称。バイドゥ、アリババ、テンセントを指し、各社の頭文字を組み合わせたもの。→バス(BATH) →ティー‐エム‐ディー(TMD)
バトゥ【Bat】
.bat
グリピン
| 分子式: | C22H25NO3 |
| その他の名称: | グリキン、トロピンベンジラート、BAT、BTE、BETE、Glykin、Tropine benzylate、α-Hydroxy-α-phenylbenzeneacetic acid (1R,5S)-tropan-3α-yl ester、グリピン、Glipin、ベンジル酸トロパニル、Tropanyl benzilate、(1β,5β)-3α-[(Hydroxy)diphenylacetoxy]-8-methyl-8-azabicyclo[3.2.1]octane |
| 体系名: | 2-ヒドロキシ-2,2-ジフェニル酢酸(1β,5β)-8-メチル-8-アザビシクロ[3.2.1]オクタン-3α-イル、α-ヒドロキシ-α-フェニルベンゼン酢酸(1R,5S)-トロパン-3α-イル、(1β,5β)-3α-[(ヒドロキシ)ジフェニルアセトキシ]-8-メチル-8-アザビシクロ[3.2.1]オクタン |
Bat
BAT
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/06/12 11:39 UTC 版)
BAT, bat
単語全体
- バット
- コウモリ
- ASM-N-2 BAT - 誘導爆弾
省略形
単語の省略形が「bat」。
頭字語
頭字語が「BAT」。
- Basic Attention Token - 暗号通貨の一つの通貨記号
- BAT (企業群) - 中華人民共和国のインターネット3大企業の総称略
- ブリティッシュ・アメリカン・タバコ
- BERRY ANISON TIMES! - RADIO BERRY(FM栃木)のラジオ番組
B・A・T
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2014/08/01 11:41 UTC 版)
| 現在、削除の方針に従って、この項目の一部の版または全体を削除することが審議されています。 削除についての議論は、削除依頼の依頼サブページで行われています。削除の議論中はこのお知らせを除去しないでください。 この項目の執筆者の方々へ: まだ削除は行われていません。削除に対する議論に参加し、削除の方針に該当するかどうか検討してください。また、本項目を既に編集されていた方は、自身の編集した記述内容を念のために控えておいてください。 |
| この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。 出典を追加して記事の信頼性向上にご協力ください。(2014年7月) |
| この記事の主題はウィキペディアにおける音楽の特筆性の基準を満たしていないおそれがあります。特筆性を証明するために、記事の主題についての信頼できる二次資料を求めています。なお、特筆性が証明できない場合には、記事は統合されるか、リダイレクトに置き換えられるか、さもなくば削除される可能性があります。(2014年7月) |
| B・A・T(BLOOD-A-TYPES) | |
|---|---|
| 基本情報 | |
| ジャンル | ロック ロカビリー ガレージ・ロック |
| 活動期間 | 1986年 - 1988年 |
| レーベル | 1987年6月25日、アルファレコード |
B・A・T(BLOOD-A-TYPES)は1986年から1988年にかけて活動した日本のロカビリーバンド。
概略
1986年に元BLACK CATSのメンバーの久米浩司と久米良昌兄弟が中心となり、ボーカル&ギターに砂川雅由をメンバーに加えB・A・T(BLOOD-A-TYPES)を結成。
1987年6月25日、アルファレコードより、シングルA面「DANCE」(作詞:大津あきら、作曲:中村裕介)、B面「KNOCKIN'DOWN」(作詞・作曲:砂川雅由)でレコードデビュー。久米兄弟が経営する本牧KOOL KATSという店を本拠に、新宿ACB、渋谷LIVEIN、芝浦インクスティック、名古屋レイボーホールなどでライブ活動、ラジオやTV出演などを開始。1988年に解散。
2010年9月、当時の未発表音源集をあつめたアルバム「KOOL KAT 〜 本牧RE-BOP」を発売。かつて発売を予定していたアルバム用のデモ録音7曲と、公開FMスタジオライブから4曲、山口憲一加入後の豊橋でのライブから2曲の全13曲入りからなる。
メンバー
- 砂川雅由 ボーカル&ギター(SCATS、SEA DRAGON、Don Carlos)
- 久米良昌 1代目ギター(BLACK CATS)
- 神山サトル2代目ギター
- 山口憲一 3代目ギター(MAGIC、RODEO、wface)
- 高橋琢実 ベース(MAGIC)
- 久米浩司 ドラムス(BLACK CATS、MAGIC、RODEO)
作詞・作曲砂川雅由(Don Carlos)
- かたなしPLAYBOY
- KOOL KAT BOOGIE
- BAD GIRL FRIEND
- ごきげんCATS
- エブリディズ
- Wedding Bell in My Home Town
- おしえてダディ
- つるカメ松竹梅ごぶマメ鯛
- Crazy Lazy Heart ※
- ジャックナイフを握り締めて
- SO LONG
- 不良伝説
※=(作曲久米浩司)
バッチファイル
(Ba T から転送)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2025/10/23 05:16 UTC 版)
|
|
この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。 (2019年10月)
|
| |
|
| 拡張子 | .bat, .cmd (Windows NT) |
|---|---|
| MIMEタイプ | application/x-bat |
| 種別 | スクリプト言語 |
バッチファイル(英: batch file)とは、DOS、OS/2、Windowsでのコマンドラインインタプリタ(シェル)に実行させたいコマンド(指令または命令)列をテキストファイルに記述したもの。バッチファイルを実行すると、シェルプログラム(一般にCOMMAND.COMやcmd.exe)がそのファイルを読み、その中のコマンドを(通常)一行ずつ実行する[注釈 1]。バッチファイルはUNIXおよびUnix系オペレーティングシステムのシェルスクリプトに相当する。主に複数の処理をまとめて記述しておき、繰り返し実行するバッチ処理のために用いられる。
DOSのバッチファイルの拡張子は.BATである。他の環境のバッチファイルの拡張子は様々である。例えば、Windows NTやOS/2では.CMDが使われており[1]、4DOSというフリーウェアでは.BTMが使われている。
AUTOEXEC.BATはブート処理の中で実行される特別なバッチファイル(自動実行バッチファイル)である。
歴史
マイクロソフトのDOSとWindowsのバッチプログラミングはこれらのオペレーティングシステム (OS) 製品のリリースとともに発展してきた。これらのOSに付属するコマンドインタプリタは2つの動作モードを持つ。1つは対話モード(コマンドプロンプトに従ってユーザーがコマンドを入力すると即座に実行される)、もう1つはバッチモード(あらかじめ設定されたコマンド列を実行する)である。どちらのモードもUNIXのシェルや1980年代初期のCP/Mなどのコマンドインターフェイスがその考え方のベースとなっている。
DOSのバッチプログラム用インタプリタはCOMMAND.COMである。DOS用バッチプログラムのうち比較的単純なコマンドはCOMMAND.COM自身が処理し(内部コマンド)、複雑なものは別の実行ファイルを呼び出して処理する(外部コマンド)。この系統のバッチプログラミングDOSからWindows 95、Windows 98、Windows Me(Windows 9x系)まで発展していった。
Windows 2000およびWindows XP以降はDOSではなくWindows NTに基づいている。この系統(Windows NT系)ではcmd.exeというコマンドラインインタプリタ(コマンド行インタプリタ)が使われ、COMMAND.COMとはある程度の互換性がある。DOSのいくつかの機能が削除されているが、DOSやDOSベースのWindowsにはない新たな機能も多く追加されている。互換性維持のためCOMMAND.COMも未だに搭載されている。なお、cmd.exeに対しては「コマンド プロンプト」という名前のショートカットが既定で作成されており、便宜上GUIに表示される名前としても各所で使用されているが、一般的な技術用語のコマンドプロンプトとは別物である。cmd.exeで利用可能なコマンドは「Windowsコマンド」とも呼ばれる[2]。
2006年には.NET Frameworkを基盤に動作する、モダンなオブジェクト指向のシェル環境としてWindows PowerShellがリリースされた。Windows PowerShellではdirなどの従来のWindowsコマンドに対するエイリアスが用意されており、完全ではないがある程度の互換性がある。のちにPowerShellはWindows以外の環境にも.NET Core/.NETベースで移植され、クロスプラットフォームとなっている。
代表的なコマンド
|
この節の加筆が望まれています。
|
以下ではWindows NT系のcmd.exeで利用できるWindowsコマンドの仕様に従って解説する。構文規則において、[と]で囲まれたものはオプション(省略可能)であることを意味する。詳しくは公式リファレンスを参照のこと[3]。/?オプションを付けてコマンドを実行することで、そのコマンドのヘルプを表示することもできる。
BASICやPascalに代表される古いプログラミング言語や、DOSおよびWindowsなどのファイルシステムではアルファベットの大文字・小文字を区別しない仕様となっている影響から、バッチファイルもほとんどの場面で大文字・小文字を区別しない。歴史的な経緯から、ヘルプのメッセージ内ではコマンド名やオプション名が大文字アルファベットで表記されているが、本記事では引用を除いて小文字アルファベットで記載するものとする。
echo
echoコマンドは標準出力にメッセージを表示する。メッセージ文字列をダブルクォーテーションやシングルクォーテーションなどで囲む必要はない。
また、echo onおよびecho offでコマンドエコーのON/OFFを切り替えることができる。コマンドエコーは既定でONになっており、各コマンド行を実行する前に標準出力にその内容を表示する[4]。この動作は通常必要とされないので、echo off コマンドをバッチファイルの最初に記述してそれを防ぐ。しかし、そのままでは echo off コマンド自体は表示されてしまう。単価記号 @ をコマンド行の先頭に置くと、その行は表示されないようになっているので、多くのバッチファイルには @echo off という行が先頭にある。
rem
コメント行はremで始める。remもコマンドの一種である[5]。コメントや注釈を意味するremarkの略[6]で、BASIC系言語のremステートメントと類似のものである。
cls
テキスト画面をクリア(消去)し、ウィンドウを既定の状態にする[7]。
color
テキスト画面の背景色と前景色を変更する[8]。16進数の0からfまで全16色のカラーコードが割り当てられており、引数として背景色と前景色を2桁の16進数で指定する。1桁の16進数を指定した場合、前景色として使われ、背景色は既定値となる。背景色と前景色に同じ値を指定した場合は失敗する。引数を指定しなかった場合、背景色と前景色が既定値にリセットされる。
call
引数で指定した別のバッチファイルや、引数で指定したラベルを持つプログラム(サブルーチン)を呼び出し、制御を移す[9]。
if
多くの汎用プログラミング言語における条件分岐構文の1つとしてif文があり、バッチファイルでもifコマンドとしてサポートされている[10]。
基本構文:
if [not] ERRORLEVEL <number> <command> [else <expression>]
if [not] <string1>==<string2> <command> [else <expression>]
if [not] exist <filename> <command> [else <expression>]
拡張構文:
if [/i] <string1> <compareop> <string2> <command> [else <expression>]
if CMDEXTVERSION <number> <command> [else <expression>]
if defined <variable> <command> [else <expression>]
既定では条件が真の場合にサブコマンドを実行するが、notを指定すると条件が偽の場合にサブコマンドを実行する。
ERRORLEVELは直前のコマンドの実行結果(終了ステータス)を格納しているシステム環境変数の1つであり、通例0が正常終了を、それ以外が異常終了(エラーコード)を意味する[11]。ifコマンドの基本構文では後続指定する<number>の値以上である場合に真となる。
existは後続指定するファイルが存在するかどうかをテストし、存在する場合は真となる。
例
カレントディレクトリに test.txt というファイルが存在するかどうかに応じて処理を分岐する。存在する場合は拡張子.txtが関連付けられているアプリケーションソフトウェアで開く。
if exist test.txt (
echo test.txt が見つかりました。
test.txt
) else (
echo test.txt が見つかりません。
)
for
C言語を代表とする多くの汎用プログラミング言語はループ構文の1つとしてfor文をサポートするが、バッチファイルのforコマンドはforeach文に相当する。もともとファイルやディレクトリ(フォルダー)やテキスト文字列の集合(set)の中から各要素に対して指定コマンド(サブコマンド)を実行するものであるが、数値の範囲を指定することもできる[12]。
基本構文:
for {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>]
ここで、<variable>はforコマンド専用の変数であり、アルファベット1文字のみが利用可能である。大文字と小文字は区別される。正規表現で書くならば、許可される文字は[A-Za-z]となる。forコマンドをコマンドラインシェル上で直接実行する場合は%iのようにパーセント記号を1つだけ使う。バッチファイル内に記述する場合は%%iのようにパーセント記号を2つ使う。
<set>にはファイルのグループを1つ以上指定することもできる。ワイルドカード(*および?)を利用することもできる。以下は有効な集合の例である。
(*.txt)
(*.txt *.png *.docx)
(2024_01_??.log)
<commandlineoptions>はサブコマンド<command>に対するオプションである。
コマンド拡張
forの直後にスペースを空けて、forコマンド自体に対するいくつかの拡張オプションを指定することも可能である。
ディレクトリのみ
ファイルではなくディレクトリのみを対象とする。
for /d {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>]
再帰
サブディレクトリも対象にする。
for /r [[<drive>:]<path>] {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>]
値の範囲で反復
変数の値を開始値<start#>と終了値<end#>の間でステップ量<step#>だけ変化させながら、指定コマンドを反復実行する。
for /l {%%|%}<variable> in (<start#>,<step#>,<end#>) do <command> [<commandlineoptions>]
まず変数に開始値が代入され、指定コマンドが実行される。次に変数の値をステップ量だけ変化させ、再び指定コマンドを実行する。ステップは正の数だけでなく負の数も指定可能である。ステップが正のとき、変数の値が終了値より大きくなった場合は指定コマンドを実行せず終了する。ステップが負のとき、変数の値が終了値より小さくなった場合は指定コマンドを実行せず終了する。
cd
指定したディレクトリを「カレントディレクトリ」として設定する。便宜上の概念から、指定ディレクトリに「移動する」とも言われる。相対パスは、cdで設定したカレントディレクトリを基準に扱われるようになる。引数を指定しなかった場合、カレントディレクトリのフルパスを出力する。
dir
指定したディレクトリの中のファイルおよびサブディレクトリのリストを表示する[13]。引数を指定しなかった場合はカレントディレクトリが対象となる。オプションを設定することで、条件に合致する特定のファイルのみ表示することもできる。
このコマンドとリダイレクトを使ってテキストファイル形式のファイルリストを作ることなどもできる。
shift
バッチファイルにおいて、バッチ引数の位置を変更する[14]。
バッチファイルをコマンドラインシェルから実行する際は10個以上の引数を指定することもできるものの、バッチファイルからは%0 - %9の範囲の引数しか扱えない仕様となっている(%0はバッチファイルの名前を表すため、実質的には9個の引数が使用可能)。
shiftコマンドによって、引数の値が1つ前の引数にコピーされる。つまり%1の値は%0にコピーされ、%2の値は%1にコピーされる。これにより、バッチファイルで疑似的に10個以上の引数を扱えるようになる。
オプションとして/nがあり、シフトを開始する引数の番号を指定できる。nには0から8までの番号を指定できる。例えばshift /2は%3を%2に、%4を%3にシフトするが、%0と%1は変更されない。
例
起動コマンド行:
test.bat ar1 ar2 ar3 ar4 ar5 ar6 ar7 ar8 ar9 ar10
バッチファイル test.bat の内容:
@echo off
echo 第 0 引数は %0 です。
echo 第 9 引数は %9 です。
shift
echo 引数の位置を変更しました。
echo 第 0 引数は %0 です。
echo 第 9 引数は %9 です。
出力:
第 0 引数は test.bat です。
第 9 引数は ar9 です。
引数の位置を変更しました。
第 0 引数は ar1 です。
第 9 引数は ar10 です。
set
「cmd.exe環境変数」を表示・設定・削除する[15]。引数なしでsetコマンドを実行した場合、現在設定されている環境変数の一覧を表示する。
基本構文:
set [<variable>=[<string>]]
set [/p] <variable>=[<promptString>]
set /a <variable>=<expression>
cmd.exe環境変数は、システム環境変数やユーザー環境変数とは異なり、起動中のcmd.exeのインスタンスおよびそこから起動した子プロセスにのみ影響する一時的な環境変数である。
動的な環境変数
set /?で表示されるヘルプには、動的な環境変数に関する注意事項が記載されている。
コマンド拡張機能が有効な場合、SET によって表示される変数の一覧には現れないいくつかの動的な環境変数があります。 これらの変数の値は、変数の値が展開されるときに動的に計算されます。 ユーザーがこれらの名前の変数を明示的に定義する場合、その定義は下記の動的な定義を無効にします。
続いて列挙される動的な環境変数とその説明文(日本語版)の引用を以下に記載する。
| 環境変数 | 説明文 | 備考 |
|---|---|---|
%CD% |
現在のディレクトリ文字列に展開します。 | カレントディレクトリを表す。cdコマンドなどで変更可能。 |
%DATE% |
DATE コマンドと同じフォーマットで現在の日付に展開します。 | システム時刻に依存する。dateコマンドでも変更可能。既定の表示形式はシステム設定に依存する。 |
%TIME% |
TIME コマンドと同じフォーマットで現在の時刻に展開します。 | システム時刻に依存する。timeコマンドでも変更可能。既定の表示形式はhh:mm:ss.msであるが、時間 (hour) 部分が1桁台の間は先頭がゼロではなく空白となる。 |
%RANDOM% |
0 から 32767 の間の任意の 10 進数に展開します。 | 疑似乱数を生成する[注釈 2]。 |
%ERRORLEVEL% |
現在の ERRORLEVEL の値に展開します。 | 直前のコマンドが正常終了したか、または異常終了したかを整数値で表したもの。0が正常終了で、それ以外が異常終了である[注釈 3]。通例ifコマンドと組み合わせて使う。 |
%CMDEXTVERSION% |
現在のコマンド プロセッサ拡張機能のバージョン番号に展開します。 | 通例ifコマンドと組み合わせて使う。 |
%CMDCMDLINE% |
コマンド プロセッサを起動したオリジナル コマンド ラインに展開します。 | - |
%HIGHESTNUMANODENUMBER% |
このコンピューター上の最大の NUMA ノード番号に展開します。 | 詳細はNUMAアーキテクチャのシステムサポートに関する情報を参照のこと[22][23]。 |
これらの環境変数の値をsetコマンドで変更することはできない。新たに同名のcmd.exe環境変数が生成され、動作がオーバーライド(上書き)されてしまうだけである。
setlocal/endlocal
setコマンドで作成する変数はcmd.exe環境変数であり、既定でグローバル変数のような性質を持つ。つまり、バッチファイル内のどこからでもその変数にアクセスすることができてしまい、またcmd.exeのインスタンスが生き残っている限り、バッチファイルの終了後もその変数が維持されてしまう。特定のバッチファイル内限定、あるいはサブルーチンのような一部の領域でのみ使用することが想定されている変数は、事前にsetlocalコマンドを実行しておくことでローカル変数とすることができる[24]。
また、endlocalコマンドを使用することで環境変更のローカル化を終了し、対となるsetlocalコマンドが実行される前の環境変数の状態を復元することができる[25]。
環境変数の遅延展開
以下のように環境変数をifコマンドの中で書き換えるケースを考える。
set my_variable=100
echo [1] my_variable is %my_variable%
if %my_variable%==100 (
set /a my_variable+=1
echo [2] my_variable is %my_variable%
)
echo [3] my_variable is %my_variable%
実行結果:
[1] my_variable is 100
[2] my_variable is 100
[3] my_variable is 101
my_variableの値はifコマンドの実行後には確かに書き換わっていることが確認できるが、ifコマンドの実行中に(サブコマンドグループの実行中に)参照すると、直感に反して書き換え前の値が出力されてしまう。これは、環境変数の展開が、既定では各コマンド行の解析時に一度だけ実行されるモードになっているからである[26]。
事前にsetlocal enabledelayedexpansionコマンドを実行し、かつ%の代わりに!を使って環境変数を囲むことで、環境変数を実行時に(サブコマンドによって実際に参照されるタイミングで)遅延展開することが可能となる。
set my_variable=100
echo [1] my_variable is %my_variable%
if %my_variable%==100 (
set /a my_variable+=1
@rem 環境変数の遅延展開を有効化する。
setlocal enabledelayedexpansion
echo [2] my_variable is !my_variable!
endlocal
)
echo [3] my_variable is %my_variable%
実行結果:
[1] my_variable is 100
[2] my_variable is 101
[3] my_variable is 101
拡張子による動作の違い
Windows NT系では.cmdだけでなく従来の.batもバッチファイルの拡張子として使用可能だが、動作に微妙な差がある。
以下のコマンドを記述したバッチファイルがあるとする。実行すると、setlocalは成功して環境変数ERRORLEVELが0に設定され、color 00は失敗して環境変数ERRORLEVELが1に設定され、set my_variable=100は成功する。
@echo off
setlocal
echo ErrorLevel is %ERRORLEVEL%
color 00
echo ErrorLevel is %ERRORLEVEL%
set my_variable=100
echo ErrorLevel is %ERRORLEVEL%
endlocal
拡張子を.cmdとした場合の実行結果:
ErrorLevel is 0
ErrorLevel is 1
ErrorLevel is 0
拡張子を.batとした場合の実行結果:
ErrorLevel is 0
ErrorLevel is 1
ErrorLevel is 1
最後の出力結果に違いが生じる原因は、.cmdではsetコマンドは成否にかかわらず常にERRORLEVELを変更し、成功した場合はERRORLEVELが0にリセットされるのに対し、.batではsetコマンドは失敗した場合にのみERRORLEVELを変更する動作となるからである[27]。つまり、.cmdのほうがいくらか安全な動作をする。.batの動作は直感的ではなく、驚き最小の原則に反しているといえる。ただし、このルールに従わないコマンドもいくつかあり、例えばechoやremは、成否およびバッチファイルの拡張子によらず常にERRORLEVELを変更しない。
例
|
この節には独自研究が含まれているおそれがあります。
|
- 単純なバッチファイルの例:
@echo off
cls
echo.
echo Hello World, press any key to start AProgram.exe!
pause > nul
AProgram.exe
echo.
echo AProgram has finished whatever it was doing. Have fun today!
画面出力:
Hello World, press any key to start AProgram.exe!
AProgram has finished whatever it was doing. Have fun today!
@echo off
echo Hello world!!
pause > nul
画面出力:
Hello world!!
- 3の倍数ならFizz、5の倍数ならBuzz、15の倍数ならFizz Buzzと表示し、FizzBuzz.txt に結果を出力
@echo off
setlocal enabledelayedexpansion
cd /d %~dp0
if exist %cd%\FizzBuzz.txt del %cd%\FizzBuzz.txt
for /l %%i in (1,1,100) do (
set echo=
set /a f=%%i%%3,b=%%i%%5
if !f!==0 set echo=!echo!Fizz
if !b!==0 set echo=!echo!Buzz
if "!echo!"=="" set echo=%%i
echo !echo!>>%cd%\FizzBuzz.txt
)
画面出力:なし
- FFmpegでエンコード バッチファイルの置かれたディレクトリを終了するまで10秒おきに監視して、tsファイルを発見次第バッチファイルと同じフォルダに置かれたffmpeg.exeでmp4にエンコードしたあと、元のファイルを削除する。 エンコードされたファイルが既に存在する場合は上書きする。
まず、forループでファイルが有るかどうかチェックする。見つかったファイルは:encodeというサブルーチンに渡される。これはエンコード後のファイル名をつける際の%~n1で元のファイルのファイル名だけを抽出する必要があるからだ。 encodeの中でファイルをffmpegに渡してエンコードし、その後delコマンドでファイルを削除したら、サブルーチンが終了し、メインルーチンに戻る。tsファイルがまだ残っていれば再びエンコードする。なければforループから抜け出し、10秒間待機する。再びtsファイルを発見すると順次エンコードする。
echo off cd %~dp :loop for %%i in (*.ts) do ( call :encode %%i% ) timeout 10 goto :loop :encode ffmpeg.exe -i "%1" -vf bwdif=1 -c:v libx264 -c:a copy -bsf:a aac_adtstoasc ^ -preset fast -aspect 16:9 -b:v 5500k -y "%~n1.mp4" del %1 exit /b
互換コマンドインタプリタ
|
この節は検証可能な参考文献や出典が全く示されていないか、不十分です。 (2024年9月)
|
マイクロソフト以外が提供するコマンドインタプリタにも様々なコマンドインタプリタがあり、強化された機能を提供している。4DOS はその一例である。
バッチプログラムを実行ファイルに変換するコンパイラもマイクロソフト以外からいくつか登場しているが、その品質は様々である。
IBMのOS/2オペレーティングシステムもマイクロソフトのOSと似たようなテキストベースのコマンド機能を持っている。
脚注
注釈
- ^
waitforコマンドを使えば同期処理ができる。 - ^ 32767は16ビット符号付き整数の最大値でもある。Microsoft Visual C++の標準Cライブラリの実装では、
rand()関数が返しうる最大値RAND_MAXも0x7fffすなわち32767となっている[16][17]。これは16ビット時代からの名残で、rand()関数の戻り値intが32ビット化されたWin32以降の環境であっても変わっていない。 - ^ 標準コマンドは、失敗したときにエラーコードとして
1や2などを返す仕様となっているものが多い[18]。これらの多くはMicrosoft Windows SDK付属のヘッダーファイル<WinError.h>で定義されているエラーコードと一致する[19]。なお、C/C++で書かれるサードパーティ製のコンソールアプリケーションでは、プログラムの異常終了時にexit()関数の引数に-1を指定するか、main()関数からreturn文で-1を返すように実装されることがあるが、これは0でない値のひとつとして-1を使っているだけであり、特に一般的というわけではない。exit()関数の引数やmain()関数の戻り値として使われるステータスコードEXIT_FAILUREの値は、規格上は実装定義[20]であり、Visual C++の実装では1として定義されている[21]。
出典
- ^ “.cmdファイルとは - IT用語辞典”. IT用語辞典 e-Words. 2022年8月11日閲覧。
- ^ Windows commands | Microsoft Learn
- ^ Command-line syntax key | Microsoft Learn
- ^ echo | Microsoft Learn
- ^ rem | Microsoft Learn
- ^ Rem - Comment - Windows CMD - SS64.com
- ^ cls | Microsoft Learn
- ^ color | Microsoft Learn
- ^ call | Microsoft Learn
- ^ if | Microsoft Learn
- ^ §Using environment variables with Cmd.exe - Command shell overview | Microsoft Learn
- ^ for | Microsoft Learn
- ^ dir | Microsoft Learn
- ^ shift | Microsoft Learn
- ^ set | Microsoft Learn
- ^ RAND_MAX | Microsoft Learn
- ^ rand | Microsoft Learn
- ^ Common program exit codes and error levels
- ^ System Error Codes (0-499) (WinError.h) - Win32 apps | Microsoft Learn
- ^ EXIT_SUCCESS, EXIT_FAILURE - cppreference.com
- ^ EXIT_SUCCESS, EXIT_FAILURE | Microsoft Learn
- ^ NUMA Support - Win32 apps | Microsoft Learn
- ^ GetNumaHighestNodeNumber function (systemtopologyapi.h) - Win32 apps | Microsoft Learn
- ^ setlocal | Microsoft Learn
- ^ endlocal | Microsoft Learn
- ^ EnableDelayedExpansion - Windows CMD - SS64.com
- ^ Errorlevel - Windows CMD - SS64.com
関連項目
BAT
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/06/02 00:38 UTC 版)
BAT(バット)は、百度、バイトダンス、アリババ、テンセントの4社で構成される。近年ではアメリカのGAFAやFANGに対抗し、中国の4大IT企業を指す言葉として、Huaweiを加えたBATH(バス)、Xiaomiを加えたBATX(バットエックス)、京東商城を加えたBATJ(バットジェイ)が用いられることもある。この言葉は日本ではまだ馴染みが薄く、多用されることは少ないが、近年は新聞やテレビなどの主要メディアでも使用される機会が増えている。LINEとZホールディングスの経営統合にも、GAFAとともに影響を与えたとされ、日本国内の大企業にも影響を与えている。
※この「BAT」の解説は、「ビッグ・テック」の解説の一部です。
「BAT」を含む「ビッグ・テック」の記事については、「ビッグ・テック」の概要を参照ください。
「Bat」の例文・使い方・用例・文例
- Ba Tのページへのリンク

