以下の内容はhttps://www.weblio.jp/content/CMDより取得しました。


デジタル大辞泉デジタル大辞泉

シー‐エム‐ディー【CMD】

読み方:しーえむでぃー

congenital muscular dystrophy》⇒先天性筋ジストロフィー


広告転職.com広告転職.com

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-カルボン酸


日本筋ジストロフィー協会日本筋ジストロフィー協会

先天性筋ジストロフィー

先天性筋ジストロフィーには中枢神経症状合併する福山型(Fukuyama CMD:FCMD)と、中枢神経症状をみない非福山型(nonFCMD)に2大別されています。福山型は古典型(classical)、あるいは西洋型(occidental)ともよばれてます。福山型の患者さんの中から、メロシン(ラミニンα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:福山型先天性筋ジストロフィーの脳病理脳を後ろからみたところ上の部分大脳、下の小さいのが小脳
横の部分側頭部)(星印)の大脳表面にはしわがなく、つるつるしている。
この部を顕微鏡でみると小さな脳回から出来ている(多小脳回)ことがわかる。
17:福山型先天性筋ジストロフィー脳病
筋病理では乳児期早期から強い筋ジストロフィー変化をみます。筋線維細く壊死再生像がみられ、間質の強い増生あります(図18)。筋内末梢神経はよく保たれていて、異常はありません。
図18: 福山型先天性筋ジストロフィーの筋病理正常(左:N)に比較して福山型(右:FCMD)では筋線維は細い。
筋線維筋線維の間が大きく空いているのは、結合組織増生した結果である。
福山型では病早期から結合組織増生が強いのが特徴的である。
18: 福山型先天性筋ジストロフィー筋病理
b.臨床症状
生下時から呼吸不全哺乳低下をみるものもありますが、多く発育発達の遅れで気付かれるのです。頚定(くびが座る)は平均カ月といわれています。多くの方では2歳前後座居まで獲得できますが、歩行獲得するものはきわめてまれです。剖検例の報告から推定すると、平均寿命12歳前後ですが、中には長命の方もおられて、私が知っている人は40歳です。
全身筋力筋緊張低下があり、乳児期身体柔らかくいわゆるフロッピーインファントfloppy infant: 身体柔らかくぐにゃぐにゃした赤ちゃんのことです)です。顔面筋罹患があるのが特徴です。すこし表情乏しく、口をぽかんと開けていて、よだれ(流涎)を多くます。頬は仮(偽)性肥大のため、ふっくらとしています。睫毛長くキラキラとした美しい目をしています(図19、20)。口の中をみると高口蓋認められます(この高口蓋顔面罹患があるとみられます。福山型以外では、先天性ミオパチー先天性筋強直性ジストロフィーという病気でもみられます)。
図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像正常(右)に比較すると、本症(左)では白質ジストロフィーのような強い変化をみる(熊本大学発達小児科 大谷助教授ご好意による)。
本症には診断的な重要な所見である。
21:メロシン欠損型先天性筋ジストロフィー脳MRI

(3)メロシン陽性型先天性筋ジストロフィーmerosin-positive congenital muscular dystrophy)
福山型(古典型)先天性筋ジストロフィーでメロシン抗体陽性染色されるものに与えられた名称です。まだ遺伝子変異も、欠損蛋白も見つかっていないので、原因はいろいろあると考えられています。
メロシン欠損型に比較すると、軽症90%以上は歩行獲得します(図22)。顔面筋罹患は約50%で、知的発達遅滞はありません。進行は遅いのですが、20歳前後歩行不能となる方が多くみられます。
図22:メロシン陽性型先天性筋ジストロフィー筋力低下全身にあるが、程度軽く歩行可能な例が多い。
知的面は正常で、進行は遅い。
顔面筋罹患は約半数である。

写真掲載許可得てます。
22:メロシン陽性型先天性筋ジストロフィー
検査上も軽く血清クレアチンキナーゼCK)値は正常なこともまれでなく、多く正常値10倍以下です。脳CT/MRIで異常をみることはまれです。診断筋生検をして、筋ジストロフィー所見確認することです。



(4)ウールリッヒ型先天性筋ジストロフィー(Ullrich congenital muscular dystrophy)(ウールリッヒ病ともよばれる
ドイツのウールリッヒという人が1930年最初に報告した病気で、手足遠位の関節軟らかく過度に伸展屈曲するのに、脊柱や首、肩、股関節のような躯幹に近い関節拘縮して伸縮しないことを特徴としています。患者さんの数が少ないこともあって、まだ分子生物学的なアプローチ始まったばかりです。最近鹿児島大学樋口先生イタリアのVanegas先生達は本症ではコラゲンVI欠損であることを報告されました。すべての患者さんで欠損があるかどうか研究進められています。

乳児期から筋力低下があり、発育発達の遅れがあります股関節脱臼がよくみられます。乳児期から手関節足関節軟らかく過度に伸展します(図2324)。踵がハンマーのように突出してます。顔面筋罹患(軽い)、高口蓋あります汗っかきが多いといわれています。お座りまではできる人が約半数歩行可能となる人が約半数ます。進行停止しているか、進行して緩徐です。呼吸筋侵されやすいので、人工呼吸器を必要とすることがあります心臓はあまり侵されないといわれています。患者さんは知的に優れているといわれています。
図23:ウーリッヒ型先天性筋ジストロフィー多くは座ることができるが、歩行可能例は約半数である。
写真のように肩や肘の関節拘縮して伸びない
(←)。

しかし遠位の手や足の関節は過伸展することが特徴とされている(→)。
図24:ウーリッヒ型先天性筋ジストロフィー
23:ウーリッヒ型先天性筋ジストロフィー24:ウーリッヒ型先天性筋ジストロフィー

ウィキペディアウィキペディア

CMD

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/03/02 19:57 UTC 版)

CMD

英語: command(コマンド)の省略形(CMD.)として使われることが多い[1]commandとは無関係の頭字語として使われることもある。

command

命令、指令、司令部といった意味を持つ。

コンピュータプログラミングのソースコード上で、commandの略称としてcmd識別子に使われることも多い[2][3]

その他

脚注


バッチファイル

(CMD から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2025/10/23 05:16 UTC 版)

BAT
拡張子 .bat, .cmd (Windows NT)
MIMEタイプ application/x-bat
種別 スクリプト言語
テンプレートを表示

バッチファイル: batch file)とは、DOSOS/2Windowsでのコマンドラインインタプリタシェル)に実行させたいコマンド(指令または命令)列をテキストファイルに記述したもの。バッチファイルを実行すると、シェルプログラム(一般にCOMMAND.COMcmd.exe)がそのファイルを読み、その中のコマンドを(通常)一行ずつ実行する[注釈 1]。バッチファイルはUNIXおよびUnix系オペレーティングシステムシェルスクリプトに相当する。主に複数の処理をまとめて記述しておき、繰り返し実行するバッチ処理のために用いられる。

DOSのバッチファイルの拡張子.BATである。他の環境のバッチファイルの拡張子は様々である。例えば、Windows NTOS/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 95Windows 98Windows MeWindows 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]/?オプションを付けてコマンドを実行することで、そのコマンドのヘルプを表示することもできる。

BASICPascalに代表される古いプログラミング言語や、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は成功して環境変数ERRORLEVEL0に設定され、color 00は失敗して環境変数ERRORLEVEL1に設定され、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を変更し、成功した場合はERRORLEVEL0にリセットされるのに対し、.batではsetコマンドは失敗した場合にのみERRORLEVELを変更する動作となるからである[27]。つまり、.cmdのほうがいくらか安全な動作をする。.batの動作は直感的ではなく、驚き最小の原則に反しているといえる。ただし、このルールに従わないコマンドもいくつかあり、例えばechoremは、成否およびバッチファイルの拡張子によらず常に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にエンコードしたあと、元のファイルを削除する。 エンコードされたファイルが既に存在する場合は上書きする。
    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
    
    まず、forループでファイルが有るかどうかチェックする。見つかったファイルは:encodeというサブルーチンに渡される。これはエンコード後のファイル名をつける際の%~n1で元のファイルのファイル名だけを抽出する必要があるからだ。 encodeの中でファイルをffmpegに渡してエンコードし、その後delコマンドでファイルを削除したら、サブルーチンが終了し、メインルーチンに戻る。tsファイルがまだ残っていれば再びエンコードする。なければforループから抜け出し、10秒間待機する。再びtsファイルを発見すると順次エンコードする。

互換コマンドインタプリタ

マイクロソフト以外が提供するコマンドインタプリタにも様々なコマンドインタプリタがあり、強化された機能を提供している。4DOS英語版 はその一例である。

バッチプログラムを実行ファイルに変換するコンパイラもマイクロソフト以外からいくつか登場しているが、その品質は様々である。

IBMのOS/2オペレーティングシステムもマイクロソフトのOSと似たようなテキストベースのコマンド機能を持っている。

脚注

注釈

  1. ^ waitforコマンドを使えば同期処理ができる。
  2. ^ 32767は16ビット符号付き整数の最大値でもある。Microsoft Visual C++標準Cライブラリの実装では、rand()関数が返しうる最大値RAND_MAX0x7fffすなわち32767となっている[16][17]。これは16ビット時代からの名残で、rand()関数の戻り値int32ビット化されたWin32以降の環境であっても変わっていない。
  3. ^ 標準コマンドは、失敗したときにエラーコードとして12などを返す仕様となっているものが多い[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]

出典

関連項目





以上の内容はhttps://www.weblio.jp/content/CMDより取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14