シー‐エム‐ディー【CMD】
読み方:しーえむでぃー
CMD
セファマンドール
| 分子式: | C18H18N6O5S2 |
| その他の名称: | セファマンドール、化合物83405、Cefamandole、Compound-83405、(6R,7R)-7-[(R)-Hydroxyphenylacetylamino]-3-[[(1-methyl-1H-tetrazol-5-yl)thio]methyl]-8-oxo-5-thia-1-azabicyclo[4.2.0]oct-2-ene-2-carboxylic acid、(6R,7R)-7α-[(R)-Hydroxy(phenyl)acetylamino]-3-[[(1-methyl-1H-tetrazol-5-yl)thio]methyl]-8-oxo-5-thia-1-azabicyclo[4.2.0]oct-2-ene-2-carboxylic acid、Cephamandole、CMD |
| 体系名: | (6R,7R)-7α-[(R)-ヒドロキシ(フェニル)アセチルアミノ]-3-[[(1-メチル-1H-テトラゾール-5-イル)チオ]メチル]-8-オキソ-5-チア-1-アザビシクロ[4.2.0]オクタ-2-エン-2-カルボン酸、(6R,7R)-7-[(R)-ヒドロキシフェニルアセチルアミノ]-3-[[(1-メチル-1H-テトラゾール-5-イル)チオ]メチル]-8-オキソ-5-チア-1-アザビシクロ[4.2.0]オクタ-2-エン-2-カルボン酸 |
先天性筋ジストロフィー
(1)福山型先天性筋ジストロフィー(Fukuyama-type congenital muscular dystrophy: FCMD)
東京女子医大小児科の福山名誉教授により1960年最初に報告されました。筋肉の症状とともに、かなり重い知的発達遅滞、てんかんなど中枢神経症状を合併することが特徴的です。いままでのところ、報告例は日本人に限られています。台湾にも福山型とそっくりな症状をもつ人が報告されましたが、遺伝子変異は日本の福山型とは異なるものでした。
a.病因、病態、病理
2,000ないし3,000年前にあたる日本人の祖先に突然変異が起こり、それが日本全体に広がったと考えられています。第9染色体長腕(9q31)に遺伝子座があります。常染色体劣性遺伝をとり、日本人10万人に対し1ないし2人の患者さんがいると計算されています。また日本人の約80人に一人は遺伝子変異をもっている(保因者)と推定されています。東京大学医科学研究所(現:大阪大学大学院)の戸田達史先生らのグループにより、遺伝子はクローニングされています。それはcDNAで7,349bp、それがコードしているのは461 個のアミノ酸からなる蛋白でフクチン(fukutin)と名付けられています。患者さんではフクチン遺伝子の3'非翻訳領域に3kbのレトロトランスポゾンが挿入されています。一部の患者さんではこの挿入変異と他の変異(点変異など)の組み合わせもあります。このフクチンは正常人では神経細胞の胞体の中にあります。その機能はまだよく分かっていません。
中枢神経系の異常は局所性の多小脳回(polymicrogyria)とよばれているものです。脳回はうんと小さくなっていますから、その異常な場所は肉眼的では平坦で無脳回様にみえます。(図17)。そのほか、白質の髄鞘化遅延、錐体路の低形成がみられます。
| 脳を後ろからみたところで上の部分が大脳、下の小さいのが小脳。 横の部分(側頭部)(星印)の大脳表面にはしわがなく、つるつるしている。 この部を顕微鏡でみると小さな脳回から出来ている(多小脳回)ことがわかる。 | |
| 図17:福山型先天性筋ジストロフィーの脳病理 | |
| 正常(左:N)に比較して、福山型(右:FCMD)では筋線維は細い。 筋線維と筋線維の間が大きく空いているのは、結合組織が増生した結果である。 福山型では病早期から結合組織の増生が強いのが特徴的である。 | |
| 図18: 福山型先天性筋ジストロフィーの筋病理 | |
生下時から呼吸不全、哺乳力低下をみるものもありますが、多くは発育、発達の遅れで気付かれるのです。頚定(くびが座る)は平均8カ月といわれています。多くの方では2歳前後で座居まで獲得できますが、歩行を獲得するものはきわめてまれです。剖検例の報告から推定すると、平均寿命は12歳前後ですが、中には長命の方もおられて、私が知っている人は40歳です。
全身の筋力、筋緊張低下があり、乳児期は身体が柔らかく、いわゆるフロッピーインファント(floppy infant: 身体が柔らかくぐにゃぐにゃした赤ちゃんのことです)です。顔面筋罹患があるのが特徴です。すこし表情に乏しく、口をぽかんと開けていて、よだれ(流涎)を多くみます。頬は仮(偽)性肥大のため、ふっくらとしています。睫毛が長く、キラキラとした美しい目をしています(図19、20)。口の中をみると高口蓋が認められます(この高口蓋は顔面罹患があるとみられます。福山型以外では、先天性ミオパチー、先天性筋強直性ジストロフィーという病気でもみられます)。
| 図19、20:福山型先天性筋ジストロフィー。 多くの患者さんは座ることはできるが、歩く人はまれである。顔面筋が弱いので口をポカンと開けていることが多い。 頬は偽性肥大のためふっくらとしていて、目はさわやかに輝いている。足の関節に拘縮がある。 バンザイをするように頼んでも筋力低下があるため十分にあげられない。 | |||
| 図19:福山型先天性筋ジストロフィー | 図20:福山型先天性筋ジストロフィー | ※写真掲載の許可を得ています。 |
中枢神経症状は本症には必発です。全例に中−高度の知的発達遅滞をみます。知能指数(IQ)が50以上を越えるお子さんは少ないです。多くは単語のみがしゃべれて、きちんと文章までしゃべれる方はまれです。有熱性ないし、無熱性(てんかん性)痙攣を約半数にみます。でもこのけいれんは薬でコントロールし易く、難治性てんかんはまれです。
c.検査所見
血清クレアチンキナーゼ(CK)値はデュシェンヌ型よりは低いのですが、数千単位の高値を示します(通常の10−30倍)。脳CT/MRIで多小脳回、小脳内の小嚢胞、白質髄鞘化の遅延をみます。筋電図は筋原性で、末梢神経伝導速度は正常です。
(2)メロシン欠損型先天性筋ジストロフィー(merosin-deficient congenital muscular dystrophy)
メロシン(ラミニンα2鎖)は筋肉の細胞膜の外側を覆う基底膜を構成する蛋白です。メロシンはαジストログリカンと結合しています(図6参照)。最近非福山型(古典型)先天性筋ジストロフィーの中に本症が見いだされ、注目を集めています。
a.病因、病態、病理
メロシンをコードする遺伝子(第6染色体長腕にあります)に変異をみます。その変異は点変異、欠失などがありますが、点変異が多く報告されています。筋病理は福山型とほぼ同じで、強い結合組織の増加をみます。メロシン抗体で筋細胞膜が染色されないので、診断は容易です。また電子顕微鏡でみても基底膜は不明瞭で断裂しています。皮膚の基底膜にもメロシンが欠損しているので、皮膚生検でも診断ができます。
b.臨床症状
欧米では非福山型(古典型)の約半数はメロシン欠損型ですが、本邦でのメロシン欠損型の報告は少なく、非福山型の10%以下と推定されています。
症状は福山型にとてもよく似ていますが、メロシン欠損型には中枢神経症状はみられないか、あっても軽度であることが異なっています(まれに福山型と同程度の重症型も報告されているます。そのときは福山型と区別しにくいと考えられています)。全身(顔面筋も含めて)の強い筋力、筋緊張低下、関節拘縮があります。座居までは獲得しても、歩行を獲得する例は少ないことも、福山型に似ています。
c.臨床検査所見
血清クレアチンキナーゼ(CK)値は福山型と同程度(10〜数十倍)に上昇します。中枢神経症状はないのに脳CT/MRI異常が必発で診断的です。白質の髄鞘化不全の所見をみ、それは白質ジストロフィー(leukodystrophy)の所見と一致します(図21)。
| 正常(右)に比較すると、本症(左)では白質ジストロフィーのような強い変化をみる(熊本大学発達小児科 大谷助教授のご好意による)。 本症には診断的な重要な所見である。 | |
| 図21:メロシン欠損型先天性筋ジストロフィーの脳MRI像 | |
(3)メロシン陽性型先天性筋ジストロフィー(merosin-positive congenital muscular dystrophy)
非福山型(古典型)先天性筋ジストロフィーでメロシン抗体で陽性に染色されるものに与えられた名称です。まだ遺伝子変異も、欠損蛋白も見つかっていないので、原因はいろいろあると考えられています。
メロシン欠損型に比較すると、軽症で90%以上は歩行を獲得します(図22)。顔面筋罹患は約50%で、知的発達遅滞はありません。進行は遅いのですが、20歳前後で歩行不能となる方が多くみられます。
| 筋力低下は全身にあるが、程度は軽く歩行可能な例が多い。 知的面は正常で、進行は遅い。 顔面筋の罹患は約半数である。 ※写真掲載の許可を得ています。 | |
| 図22:メロシン陽性型先天性筋ジストロフィー | |
(4)ウールリッヒ型先天性筋ジストロフィー(Ullrich congenital muscular dystrophy)(ウールリッヒ病ともよばれる)
ドイツのウールリッヒという人が1930年に最初に報告した病気で、手足の遠位の関節は軟らかく過度に伸展、屈曲するのに、脊柱や首、肩、股関節のような躯幹に近い関節は拘縮して伸縮しないことを特徴としています。患者さんの数が少ないこともあって、まだ分子生物学的なアプローチは始まったばかりです。最近鹿児島大学の樋口先生、イタリアのVanegas先生達は本症ではコラゲンVIの欠損であることを報告されました。すべての患者さんで欠損があるかどうか、研究が進められています。
乳児期から筋力低下があり、発育・発達の遅れがあります。股関節の脱臼がよくみられます。乳児期から手関節、足関節が軟らかく、過度に伸展します(図23,24)。踵がハンマーのように突出しています。顔面筋の罹患(軽い)、高口蓋があります。汗っかきが多いといわれています。お座りまではできる人が約半数、歩行可能となる人が約半数います。進行は停止しているか、進行しても緩徐です。呼吸筋が侵されやすいので、人工呼吸器を必要とすることがあります。心臓はあまり侵されないといわれています。患者さんは知的に優れているといわれています。
| 多くは座ることができるが、歩行可能例は約半数である。 写真のように肩や肘の関節は拘縮して伸びない (←)。 しかし遠位の手や足の関節は過伸展することが特徴とされている(→)。 | ||
| 図23:ウーリッヒ型先天性筋ジストロフィー | 図24:ウーリッヒ型先天性筋ジストロフィー |
CMD
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/03/02 19:57 UTC 版)
CMD
英語: command(コマンド)の省略形(CMD.)として使われることが多い[1]。commandとは無関係の頭字語として使われることもある。
command
命令、指令、司令部といった意味を持つ。
- cmd.exe - Windows NT系 (Windows NT 3.1以降)・OS/2 などのコマンドラインインタプリタ。
- 拡張子 .cmd/.CMD
コンピュータプログラミングのソースコード上で、commandの略称としてcmdが識別子に使われることも多い[2][3]。
その他
- カムデン・ロード駅 (Camden Road railway station) の駅コード。
- おおいぬ座矮小銀河 (Canis Major Dwarf)
- キャッサバモザイク病 (cassava mosaic disease)
- 先天性筋ジストロフィー (congenital muscular dystrophy)
- 色等級図 (color-magnitude diagram)
- シンシナティ・マイティダックス (Cincinnati Mighty Ducks) - アメリカシンシナティのホッケーチーム。
- 在外公館長 (chef de mission diplomatique)
脚注
バッチファイル
(CMD から転送)
出典: フリー百科事典『ウィキペディア(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
関連項目
「CMD」に関係したコラム
FXのチャート分析ソフトMT4で10分足や2時間足などを表示するには
FX(外国為替証拠金取引)のチャート分析ソフトMT4(Meta Trader 4)では、次の時間足の表示ができます。ティック1分足5分足15分足30分足1時間足4時間足日足週足MT4では、10分足や1...
- CMDのページへのリンク