| ファイル名拡張子 | .bat、、.cmd.btm |
|---|---|
| インターネットメディアの種類 |
|
| フォーマットの種類 | スクリプト |
| コンテナ用 | スクリプト |
バッチファイルは、DOS、OS/2、およびMicrosoft Windowsのスクリプト ファイルです。これは、コマンド ライン インタープリタによって実行される一連のコマンドで構成され、プレーン テキストファイルに格納されています。バッチ ファイルには、インタープリタが対話的に受け入れる任意のコマンドを含めることができ、、、ラベルなど、バッチ ファイル内で条件分岐やループを可能にする構造を使用できます。「バッチ」という用語は、バッチ処理に由来し、「非対話型実行」を意味しますが、バッチ ファイルは複数のデータのバッチを処理できない場合があります。
IFFORGOTO
メインフレームやミニコンピュータシステムのジョブ制御言語(JCL)、DCL 、その他のシステムと同様に、バッチファイルは、ユーザーがスクリプトを設定して自動化できるようにすることで、特定の定期的なタスクに必要な作業を容易にするために追加されました。バッチファイルを実行すると、シェルプログラム (通常はCOMMAND.COMまたはcmd.exe ) がファイルを読み取り、通常は行ごとにコマンドを実行します。[1 ] LinuxなどのUnix 系 オペレーティングシステムには、シェルスクリプトと呼ばれる同様の、しかしより柔軟なタイプのファイルがあります。[2]
ファイル名拡張子 .bat は、DOS および Windows で使用されます。Windows NTおよび OS/2では.cmdも追加されました。他の環境のバッチ ファイルは、異なる拡張子を持つ場合があります。たとえば、4DOS、4OS2、および4NT関連シェル では.btmです。
バッチ ファイルの詳細な処理は、バージョン間で大幅に変更されています。この記事の詳細の一部はすべてのバッチ ファイルに適用されますが、その他の詳細は特定のバージョンにのみ適用されます。
バリエーション
ドス
MS-DOSでは、バッチ ファイルは、名前と必要なパラメータを入力して キーを押すことで、コマンド ライン インターフェイス↵ Enterから起動できます。DOS がロードされると、ファイルAUTOEXEC.BAT が存在する場合は自動的に実行されるため、DOS 環境を設定するために実行する必要があるコマンドをこのファイルに配置できます。コンピュータ ユーザーは、AUTOEXEC.BAT ファイルを使用して、システムの日付と時刻を設定したり、DOS 環境を初期化したり、常駐プログラムやデバイス ドライバをロードしたり、ネットワーク接続と割り当てを初期化したりします。
.bat ファイル名拡張子は、手動で入力されたコマンドのリストであるかのように、コマンド インタープリターCOMMAND.COMによって1 行ずつ実行されるコマンドを含むファイルを識別します。また、行実行のフローを変更するためのコマンドなど、基本的なプログラミング機能のためのバッチ ファイル固有の追加コマンドも含まれていますGOTO。
初期のウィンドウ
Microsoft Windows は、テキストベースのオペレーティング システム上のグラフィカル ユーザー インターフェイス(GUI) ベース オーバーレイとして 1985 年に導入され、DOS 上で実行するように設計されました。起動するには、コマンドが使用され、これをAUTOEXEC.BATファイルの末尾に追加してWindows の自動読み込みを可能にしました。以前のバージョンでは、MS-DOS プロンプトで Windows から .bat タイプのファイルを実行できました。Windows 3.1x以前、およびWindows 9xでは、バッチ ファイルを実行するために COMMAND.COM が呼び出されました。
WIN
OS/2
IBM OS/2オペレーティング システムは、DOS スタイルのバッチ ファイルをサポートしていました。また、より高度なバッチ ファイルスクリプト言語である REXXのバージョンも含まれていました。IBM と Microsoft はこのシステムの開発を開始しましたが、構築中に論争が起こり、決裂しました。その結果、IBM は DOS のようなコンソール シェルを Microsoft に言及することなく単に DOS と名付けましたが、COMMAND.COM からのバッチ ファイルの動作に関しては、これが何の違いも生まなかったようです。
OS/2 のバッチ ファイル インタープリタは、EXTPROC コマンドもサポートしています。このコマンドは、バッチ ファイルを EXTPROC ファイルで指定されたプログラムにデータ ファイルとして渡します。指定されたプログラムはスクリプト ファイルである可能性があり、これはUnix 系オペレーティング システムで使用される#!メカニズムに似ています。
ウィンドウズ
Windows 98以前とは異なり、 Windows NTファミリのオペレーティング システムは MS-DOS に依存しません。Windows NT では、.CMD または .BAT 拡張子のスクリプトを実行できる拡張 32 ビット コマンド インタープリタ ( cmd.exe ) が導入されました。 Cmd.exe は追加のコマンドを追加し、既存のコマンドを若干異なる方法で実装したため、同じバッチ ファイル (拡張子が異なる) が cmd.exe と COMMAND.COM で異なる動作をする場合があります。ほとんどの場合、サポートされていないいくつかのコマンドを使用しなければ、操作は同じです。 COMMAND.COM に対する Cmd.exe の拡張機能は、互換性のために無効にできます。
Microsoft は、Windows の古いバージョンのユーザーが特定の cmd.exe スタイルのバッチ ファイルを使用できるように、WIN95CMD と呼ばれる Windows 9x および ME 用の cmd.exe のバージョンをリリースしました。
Windows 8 では[アップデート]、バッチ ファイルの通常のコマンド インタープリターは cmd.exe です。古い COMMAND.COM も、16 ビット プログラムを実行できる 32 ビット バージョンの Windows で実行できます。[注 1]
[3] ==ファイル名拡張子==
- 。バット
- Microsoftがバッチ ファイルに使用した最初のファイル名拡張子。この拡張子は、2 つのコマンド インタープリタがバッチ ファイルを実行する方法が異なるにもかかわらず、DOS およびすべてのバージョンの Windows の COMMAND.COM または cmd.exe で実行されます。
- .cmd
- Windows NTファミリーのバッチ ファイルに使用され、解釈のために cmd.exe に送られます。COMMAND.COM はこのファイル名拡張子を認識しないため、cmd.exe スクリプトが誤って間違った Windows 環境で実行されることはありません。さらに
append、、、、、、およびコマンドは、.bat ファイルから実行された場合、エラーが発生した場合にのみ変数の値を変更しますが、.cmd ファイル内から実行さdpathれた場合、エラーなしで戻った場合でも errorlevel に影響します。[4]これは IBM の OS/2 でもバッチ ファイル用として使用されています。ftypesetpathassocprompterrorlevel - .btm
- 4DOS、4OS2、4NT、Take Commandで使用される拡張機能。これらのスクリプトは、行ごとにロードされるのではなく、スクリプト全体が実行可能な状態でロードされるため、特に長いスクリプトの場合は高速です。[ 5 ]
バッチファイルパラメータ
COMMAND.COM と cmd.exe は、バッチ ジョブのパスと名前、およびバッチ ジョブ内から最初の 9 つの呼び出しパラメータを参照するために、特殊変数 ( %0、%1から) をサポートしています (も参照) 。存在しないパラメータは、長さが 0 の文字列に置き換えられます。これらは環境変数と同様に使用できますが、環境には保存されません。Microsoft と IBM はこれらの変数を置換パラメータまたは置換可能パラメータと呼び、Digital Research、Novell、Caldera は置換変数という用語を確立しました[6]。JP Software は、これらをバッチ ファイル パラメータと呼んでいます。[7]%9SHIFT
例
このサンプル バッチ ファイルはHello World!、 を表示し、プロンプトを表示してユーザーがキーを押すのを待ち、その後終了します。(注: 変数を操作しない限り、コマンドが小文字か大文字かは関係ありません)
@ ECHO OFF
ECHO Hello World!
PAUSE
ファイルを実行するには、通常、 Microsoft メモ帳などのテキスト エディターやプレーン テキスト モードで動作するワード プロセッサを使用して作成されたプレーン テキスト形式で、ファイル名拡張子サフィックス .bat (Windows NT タイプのオペレーティング システムの場合は .cmd) を付けて保存する必要があります。
実行すると、次のように表示されます。
「こんにちは世界」 続行するには任意のキーを押してください。
説明
インタープリタは、最初の行から順に各行を実行します。@行の先頭の 記号は、実行時にプロンプトがそのコマンドを表示しないようにします。 コマンドは、ECHO OFFプロンプトを恒久的に、または再度オンにするまでオフにします。 は、多く@ECHO OFFの場合、ここでのようにバッチファイルの最初の行であり、それ自体を含め、すべてのコマンドが表示されないようにします。次に次の行が実行され、コマンドECHO Hello World!は を出力します。Hello World!次の行が実行され、PAUSEコマンドは を表示してPress any key to continue . . .スクリプトの実行を一時停止します。キーが押されると、コマンドがなくなるため、スクリプトは終了します。Windows では、既に実行中のコマンド プロンプトウィンドウからスクリプトを実行すると、MS-DOS の場合と同様にウィンドウはプロンプトで開いたままになります。それ以外の場合は、終了時にウィンドウが閉じます。
制限と例外
変数内のNULL値
変数の展開はコマンドにテキストとして代入されるため、何も含まれていない変数は構文から消え、スペースを含む変数は複数のトークンに変換されます。これにより、構文エラーやバグが発生する可能性があります。
たとえば、%foo% が空の場合、次のステートメントは次のようになります。
IF %foo% == bar ECHO等しい
誤った構造として解析されます:
IF ==bar ECHO 等しい
同様に、%foo%が含まれる場合はabc def、別の構文エラーが発生します。
IF abc def == bar ECHO等しい
この問題を回避するための通常の方法は、変数の展開を引用符で囲み、空の変数がIF ""=="bar"無効な式ではなく有効な式に展開されるようにIF ==barすることです。変数と比較されるテキストも引用符で囲む必要があります。引用符は特別な区切り構文ではなく、これらの文字自体を表すためです。
IF " %foo% " == "bar" ECHO等しい
Windows 2000 以降で使用できる遅延 !VARIABLE! 展開を使用すると、これらの構文エラーを回避できます。この場合、IF コマンドが解析された後に値が展開されるため、null または複数単語の変数は構文的に失敗しません。
IF !foo! == bar ECHO等しい
Windows 2000 以降でのもう 1 つの違いは、空の変数 (未定義) が置換されないことです。前の例で説明したように、以前のバッチ インタープリタの動作では空の文字列が生成されていました。例:
C:\> MyVar を設定 = C:\> echo %MyVar% %MyVar%
C:\> if " %MyVar% " == "" ( echo MyVar は定義されていません) else ( echo MyVar は%MyVar%です)
MyVar は %MyVar% です
Windows 2000 より前のバッチ インタープリタでは、結果が表示されていましたMyVar is not defined。
渡された文字列内の引用符とスペース
Unix/POSIX プロセスでは、シェルによって既に文字列の配列に分割されたコマンドライン引数を受け取りますが、Windows プロセスでは、GetCommandLine API 関数を介して、コマンドライン全体を 1 つの文字列として受け取ります。その結果、各 Windows アプリケーションは、コマンドライン全体を引数に分割する独自のパーサーを実装できます。多くのアプリケーションとコマンドライン ツールでは、これを行うための独自の構文を開発しているため、Windows コマンドラインでメタ文字を引用またはエスケープするための単一の規則はありません。
- 一部のコマンドでは、スペースが引用符で囲まれていない限り、スペースは引数を区切る区切り文字として扱われます。引用符をアプリケーションに渡す方法については、さまざまな規則があります。
- 広く使用されている規則は、Microsoft Visual C++ ランタイム ライブラリに組み込まれたコマンド ライン パーサーまたは CommandLineToArgvW 関数によって実装されています。この規則では、2 n 個のバックスラッシュの後に引用符 (") が続くとn 個のバックスラッシュの後に引用符の開始/終了が生成され、(2 n )+1 個のバックスラッシュの後に引用符が続くと、n 個のバックスラッシュの後に引用符リテラルが生成されます。同じ規則が.NET Framework仕様の一部です。[8]
- 文書化されていない側面として、引用符で囲まれた文字列の途中に""があると、一重引用符が生成されるという点があります。 [8] (2008 年の CRT の変更 [msvcr90] により、この文書化されていない引用符の処理が変更されました。[9] ) これは、 |、&、>などの cmd メタ文字の解釈を再度有効にせずに、引数に引用符を挿入するのに役立ちます。(cmd は、通常の\" を引用符のエスケープとして認識しません。引用符を見ると、引用符が終了したとみなして、これらの特別な意味を再度有効にします。)
- もう 1 つの規則は、一重引用符 ( " ) を文字列の一部として含めないことです。ただし、エスケープされた引用符 ( """ ) は文字列の一部にすることができます。[引用が必要]
- さらにもう1つの一般的な慣習は、 Cygwinから移植されたプログラムの使用から来ています。これは、バックスラッシュが引用符の前か前でないかの区別をしません。これらの代替コマンドラインパーサーの詳細については、glob (プログラミング) § WindowsとDOSを参照してください。 [10]
cmd.exeやなどのいくつかの重要なWindowsコマンドはwscript.exe独自のルールを使用します。[9]
- 広く使用されている規則は、Microsoft Visual C++ ランタイム ライブラリに組み込まれたコマンド ライン パーサーまたは CommandLineToArgvW 関数によって実装されています。この規則では、2 n 個のバックスラッシュの後に引用符 (") が続くとn 個のバックスラッシュの後に引用符の開始/終了が生成され、(2 n )+1 個のバックスラッシュの後に引用符が続くと、n 個のバックスラッシュの後に引用符リテラルが生成されます。同じ規則が.NET Framework仕様の一部です。[8]
- 他のコマンドでは、スペースは区切り文字として扱われないため、引用符は必要ありません。引用符が含まれている場合、引用符は文字列の一部になります。これは、 echoなどの一部の組み込みコマンドに適用されます。
文字列に引用符が含まれており、引用符で囲む必要がある別のテキスト行に挿入される場合は、引用符のメカニズムに特に注意する必要があります。
C:\> set foo = "この文字列は引用符で囲まれています"
C:\> echo "test 1 %foo% "
"test 1 "この文字列は引用符で囲まれています""
C:\> eventcreate /T Warning /ID 1 /L System /SO "Source" /D "Example: %foo% "
エラー: 無効な引数/オプション - 'string'。
使用方法については「EVENTCREATE /?」と入力してください。
Windows 2000 以降では、値内の引用符文字を 3 つの引用符文字の連続に置き換えることで解決できます。
C:\> set foo = "この文字列は引用符で囲まれています"
C:\> foo = %foo:"="""% を設定します
C:\> echo "test 1 %foo% "
"test 1 """この文字列は引用符で囲まれています""""
C:\> eventcreate /T Warning /ID 1 /L System /SO "Source" /D "Example: %foo% "
成功: 「警告」タイプのイベントが「ソース」ログ/ソースに作成されました。
文字列内のエスケープ文字
パイプ ( ) 文字などの一部の文字は|、コマンド ラインに対して特別な意味を持ちます。キャレット ^ 記号を使用してエスケープしない限り、
ECHOコマンドを使用してテキストとして印刷することはできません。
C:\> echo foo | bar
'bar' は内部または外部コマンド、
操作可能なプログラム、またはバッチ ファイルとして認識されません。
C:\> echo foo ^| bar
foo | bar
ただし、エスケープされた文字を環境変数に挿入する場合、エスケープは期待どおりに機能しません。単にエコーすると、変数にはライブ パイプ コマンドが含まれることになります。変数内の文字をテキストとして表示するには、キャレット自体とエスケープされた文字の両方をエスケープする必要があります。
C:\> set foo = bar | baz
'baz' は、内部または外部コマンド、
操作可能なプログラム、またはバッチ ファイルとして認識されません。
C:\> set foo = bar ^| baz
C:\> echo %foo%
'baz' は、内部コマンドまたは外部コマンド、
操作可能なプログラム、またはバッチ ファイルとして認識されません。
C:\> set foo = bar ^^^| baz
C:\> echo %foo%
bar |バズ
Windows 2000 以降で または で使用できる遅延展開は、コマンドが解析された後に変数値が展開されるため、環境変数に格納されている特殊文字を表示するために使用できます。
C:\> cmd /V:ON
Microsoft Windows [バージョン 6.1.7601]
Copyright (c) 2009 Microsoft Corporation。無断複写・転載を禁じます。
C:\> set foo = bar ^| baz
C:\>エコー !foo!
バー |バズ
スリープまたはスクリプトによる遅延
Windows Vista で TIMEOUT コマンドが導入されるまでは、PAUSE コマンドはキーが押されるまでスクリプトのアクティビティを無期限に停止するため、時間制限付きの一時停止を実装する簡単な方法はありませんでした。
多くの回避策が可能であったが[11]、一般的には一部の環境でしか機能しなかった。CHOICEコマンドは古いDOSバージョンでは利用できなかったり、PINGTCP/IPがインストールされている場合にのみ利用可能であったり、などであった。マイクロソフトからは解決策は提供されていなかったが、他のソースからいくつかの小さなユーティリティプログラムをインストールすることが可能であった。商用の例として、1988年のNorton Utilities Batch Enhancer (BE)コマンドではBE DELAY 181秒間待機し、無料の94バイトのWAIT.COM [12]ではWAIT 55秒間待機してからスクリプトに制御を戻します。このようなプログラムのほとんどは16ビットの.COMファイルであるため、64ビットWindowsとは互換性がありません。
CR/LF を削除したテキスト出力
通常、印刷されるすべてのテキストでは、各行の末尾に キャリッジリターン(CR) とライン フィード(LF)の制御文字が自動的に追加されます。
- バッチテスト.bat
@ echo foo @ echo bar
C:\> batchtest.bat foo バー
2 つの echo コマンドが同じコマンド ラインを共有しているかどうかは問題ではありません。出力を別々の行に分割するために CR/LF コードが挿入されます。
C:\> @ echoメッセージ 1 &@ echoメッセージ 2
メッセージ 1
メッセージ 2
Windows 2000 以降で発見されたトリックは、入力用の特別なプロンプトを使用して、テキストの末尾に CR/LF を付けずにテキストを出力することです。この例では、CR/LF はメッセージ 1 の後には続きませんが、行 2 と行 3 の後には続きます。
- バッチテスト2.bat
@ echo off set /p = "メッセージ 1" < nul echoメッセージ 2 echoメッセージ 3
C:\> batchtest2.bat メッセージ 1メッセージ 2 メッセージ 3
これを使用すると、末尾に CR/LF を追加せずにデータをテキスト ファイルに出力できます。
C:\> set /p = "メッセージ 1" < nul > data.txt
C:\> set /p = "メッセージ 2" < nul >> data.txt
C:\> set /p = "メッセージ 3" < nul >> data.txt
C:\> type data.txt
メッセージ 1メッセージ 2メッセージ 3
ただし、この削除された CR/LF プロンプト出力を環境変数に直接挿入する方法はありません。
ショートカットから統一命名規則 (UNC) 作業ディレクトリを設定する
UNCパスを現在の作業ディレクトリとして使用するコマンドプロンプトは使用できません。例:\\server\share\directory\
コマンド プロンプトでは、作業ディレクトリを割り当てるためにドライブ文字を使用する必要があるため、サーバーの UNC 共有に保存されている複雑なバッチ ファイルの実行が難しくなります。バッチ ファイルは UNC ファイル パスから実行できますが、作業ディレクトリのデフォルトは ですC:\Windows\System32\。
Windows 2000 以降では、回避策としてコマンド拡張機能付きのPUSHDandPOPDコマンドを使用します。[nb 2]
デフォルトで有効になっていない場合は、/E:ONコマンド インタープリターのスイッチを使用してコマンド拡張機能を一時的に有効にすることができます。
したがって、UNC 共有でバッチ ファイルを実行し、UNC 共有に一時的なドライブ文字を割り当て、UNC 共有をバッチ ファイルの作業ディレクトリとして使用するには、次のような Windows ショートカットを作成できます。
- ターゲット:
このショートカットの作業ディレクトリ属性は無視されます。
これにより、Windows Vista 以降のユーザー アカウント制御(UAC)に関連する問題も解決されます。管理者がログオンし、UAC が有効になっている場合、右クリックのファイル コンテキスト メニューを使用して、ネットワーク ドライブ文字から管理者としてバッチ ファイルを実行しようとすると、操作が予期せず失敗します。これは、昇格された UAC 特権アカウント コンテキストにはネットワーク ドライブ文字の割り当てがなく、エクスプローラー シェルまたはログオン スクリプトを介して昇格されたコンテキストにドライブ文字を割り当てることができないためです。ただし、上記のPUSHD/POPD構造を使用してバッチ ファイルへのショートカットを作成し、そのショートカットを使用してバッチ ファイルを管理者として実行すると、昇格されたアカウント コンテキストで一時的なドライブ文字が作成および削除され、バッチ ファイルが正しく機能します。
次の構文は、現在のバッチ スクリプトのパスに正しく展開されます。
%~dp0
UNCデフォルトパスは、古いプログラムをクラッシュさせる原因となっていたため、デフォルトではオフになっています。[13]
[13]DisableUNCCheckのDwordレジストリ値により、デフォルトディレクトリをUNCにすることができます。コマンドは変更を拒否しますが、Cmdへのショートカットまたはスタートコマンドを使用して、デフォルトディレクトリにUNCパスを配置します。(共有は管理者用です)。
HKEY_CURRENT_USER\Software\Microsoft\Command ProcessorCDC$
文字セット
バッチファイルは、コンピュータで定義されたOEM文字セット(コードページ437など)を使用します。これらの非ASCII部分は、 Windowsで使用されるUnicodeまたはWindows文字セットと互換性がないため、注意が必要です。[14]英語以外のファイル名は、DOS文字セット互換のエディタで入力した場合にのみ機能します。このセット以外の文字を含むファイル名は、バッチファイルでは機能しません。
コード ページ 437 などの代わりに Unicode でコマンド プロンプトを表示するには、cmd /Uコマンドを使用します。このようなコマンド プロンプトでは、Unicode ファイル名のバッチ ファイルが機能します。また、cmd /U文字セットとして Unicode を使用してコマンドを直接実行することもできます。たとえば、UTF-16cmd /U /C dir > files.txt LE エンコードで、正しい Windows 文字を含むディレクトリ リストを含むファイルを作成します。
ウイルスとマルウェアのバッチ処理
他のプログラミング言語と同様に、バッチファイルも悪意を持って使用される可能性があります。単純なトロイの木馬やフォーク爆弾は簡単に作成でき、バッチファイルはホストファイルを変更することでDNSポイズニングの一種を実行できます。バッチウイルスも可能であり、Windowsの自動実行機能を使用してUSBフラッシュドライブ経由で拡散することもできます。[15]
バッチ ファイル内の次のコマンドは、最初に確認を求めることなく、現在のディレクトリ (フォルダー) 内のすべてのデータを削除します。
削除/Q *.*
これら 3 つのコマンドは、継続的に複製されて利用可能なシステム リソースを枯渇させ、システムの速度を低下させたりクラッシュさせたりする 単純なフォーク ボムです。
: TOP
開始 "" %0
TOPへ移動
その他の Windows スクリプト言語
.cmd ファイルを解釈する cmd.exe コマンド プロセッサは、Windows 10 までのすべての 32 ビット版 Windows と Windows 11 までのすべての 64 ビット版 Windows でサポートされています。.BAT ファイルを解釈する COMMAND.EXE は、少なくとも Windows 10 までのすべての 16 ビット版および 32 ビット版でサポートされていました。[nb 3]
Windows では、他にも新しい、より強力なスクリプト言語が利用できます。ただし、これらを使用するには、スクリプト言語インタープリタがインストールされている必要があります。
- 拡張バッチ言語 (EBL) ( .bat ) — 1982 年に IBM で働いていたFrank Canovaが「個人」プロジェクトとして開発しました。その後、Seaware Corp によって主に DOS 用のインタープリターおよびコンパイラーとして販売されましたが、後に Windows 用にも販売されました。
- KiXtart ( .kix ) — 1991 年に Microsoft の従業員によって開発されました。特に、.cmd ファイルのシンプルな「感覚」を維持しながら、ネットワーク ログオン スクリプトで役立つコマンドのニーズを満たすために開発されました。
- Windows Script Host ( .vbs、.jsおよび.wsf ) — 1998 年に Microsoft によってリリースされ、 cscript.exe と wscript.exe で構成され、VBScriptまたはJScriptで記述されたスクリプトを実行します。スクリプトは、ウィンドウ モード ( wscript.exe ホストを使用) またはコンソール ベース モード ( cscript.exe ホストを使用) で実行できます。これらは、 Windows 98以降、Windows の一部となっています。
- PowerShell ( .ps1 ) — 2006年にMicrosoftによってリリースされ、 Windows XP (SP2/SP3)以降のバージョンで動作します。PowerShellは対話型(コマンドラインインターフェイスから)と保存されたスクリプトの両方で動作し、 Unixシェルに非常に似ています。[16]
- Cygwinなどの Unix 互換ツールがインストールされている場合、または Windows Subsystem for Linux (WSL) が使用されている場合は、Unix スタイルのシェル スクリプト言語を使用できます。
- Perl、Python、Ruby、Rexx、Node.js、PHPなどのクロスプラットフォームスクリプト ツールが Windows で利用できます。
拡張子なしのファイル名が入力されると、スクリプト ファイルが実行されます。、 、、などが存在する場合、 の解釈を制御する優先順位のルールがあり、デフォルトではDoThisが最高の優先順位になります。このデフォルトの順序は、新しいオペレーティング システムでは、ユーザーが設定可能なPATHEXT環境変数によって変更できます。
DoThis.comDoThis.exeDoThis.batDoThis.cmdDoThis.com
参照
- DOSコマンドのリスト
- シェルスクリプト、Unix および Linux の「バッチファイル」
注記
- ^ COMMAND.COM が (\WINDOWS\SYSTEM32 ディレクトリ内で) 引き続き使用可能であることを確認するには、
COMMAND.COM32 ビット Windows 7 コマンド プロンプトで入力します。 - ^ 「コマンド拡張機能が有効になっている場合、PUSHD コマンドは通常のドライブ文字とパスに加えてネットワーク パスも受け入れます。ネットワーク パスが指定されている場合、PUSHD は指定されたネットワーク リソースを指す一時的なドライブ文字を作成し、新しく定義されたドライブ文字を使用して現在のドライブとディレクトリを変更します。一時的なドライブ文字は、最初に見つかった未使用のドライブ文字を使用して、Z: から下に割り当てられます。」 --Windows 7 の PUSHD のヘルプ
- ^ CMD.EXE および COMMAND.COM が使用可能かどうかは、任意のバージョンの Windows で呼び出すことによって確認できます (COMMAND.COM は 64 ビット バージョンでは使用できません。16 ビット プログラムをサポートするオプションを使用してインストールされている場合、Windows 8 32 ビット バージョンでのみ使用できる可能性があります)。
参考文献
- ^ 「バッチ ファイルの使用: スクリプト、管理サービス」。Technet.microsoft.com。2005 年 1 月 21 日。2011 年 12 月 28 日にオリジナルからアーカイブ。2012年 11 月 30 日に取得。
- ^ Henry-Stocker, Sandra (2007-07-18). 「Unix スクリプト スキルを使用してバッチ ファイルを作成する」. itworld.com . IT World. 2018-06-14 にオリジナルからアーカイブ。2018-06-13に取得。
- ^
- ^ 「bat と cmd の違い | WWoIT - Wayne's World of IT」waynes-world-it.blogspot.fr . 2012-11-15. 2014-03-02 にオリジナルからアーカイブ。 2012-11-30に取得。
- ^ 「btm ファイル拡張子 :: .btm ファイルタイプについて」。Cryer.co.uk。2008 年 10 月 11 日時点のオリジナルよりアーカイブ。2012 年 11 月 30 日閲覧。
- ^ Caldera DR-DOS 7.02 ユーザーガイド、Caldera, Inc.、1998 [1993、1997]、2016-11-05にオリジナルからアーカイブ、2013-08-10に取得
- ^ Brothers, Hardin; Rawson, Tom ; Conn, Rex C .; Paul, Matthias R.; Dye, Charles E.; Georgiev, Luchezar I. (2002-02-27). 4DOS 8.00 オンライン ヘルプ。
- ^ ab ".NET Core Runtime: System.Diagnostics.Process.Unix". GitHub . 2023-03-29 にオリジナルからアーカイブされました。2020-02-11に取得。
inQuotes 領域内の 2 つの連続する二重引用符は、リテラルの二重引用符になります (パーサーは inQuotes 領域に残ります)。 この動作は code:ParseArgumentsIntoList の仕様の一部ではありませんが、CRT および .NET Framework と互換性があります。
- ^ ab Deley, David. 「コマンドラインパラメータの解析方法」。2020年6月8日時点のオリジナルよりアーカイブ。2020年6月8日閲覧。
- ^ 「子プロセスのドキュメント、セクション Windows コマンドライン、NodeJS PR #29576」。GitHub。2022年8 月 21 日時点のオリジナルよりアーカイブ。2020年 2 月 11 日閲覧。
- ^ 「遅延の実行方法」 2011-11-20 にWayback Machineにアーカイブ、ericphelps.com
- ^ 「DOS 用ユーティリティ、WAIT.ZIP (WAIT.COM のアーカイブ) およびその他のプログラムへのリンク」。2011 年 11 月 13 日時点のオリジナルよりアーカイブ。2011年 11 月 15 日閲覧。
- ^ ab 「Cmd.exe は、現在のディレクトリとして UNC 名をサポートしていません」。2015 年 5 月 18 日のオリジナルからアーカイブ。2015 年 4 月 28 日閲覧。
- ^ Chen, Raymond . 「コード ページに注目してください」。Microsoft . 2012 年 1 月 17 日時点のオリジナルよりアーカイブ。2011 年 12 月 13 日閲覧。
- ^ バッチファイル - ウイルス作成の技術 2013-10-29 にWayback Machineでアーカイブ
- ^ 「Windows PowerShell - Unix が Windows に登場」。Geekswithblogs.net。2012 年 6 月 14 日時点のオリジナルよりアーカイブ。2012年 11 月 30 日閲覧。
外部リンク
- Microsoft Windows XP バッチ ファイル リファレンス
- Windows 10 バッチファイルコマンド
- Windows コマンドライン インターフェイス スクリプト プログラミング リンク
