バッチファイル

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ

バッチファイル
バッチファイルicon.png
ファイル名拡張子.bat、、.cmd_.btm
インターネットメディアタイプ
  • application/bat
  • application/x-bat
  • application/x-msdos-program
  • text/plain
フォーマットの種類スクリプティング
のための容器スクリプト

バッチファイルは、DOS OS / 2、およびMicrosoftWindowsスクリプトファイルですこれは、コマンドラインインタプリタによって実行される一連のコマンドで構成され、プレーンテキストファイルに保存されます。バッチファイルには、インタプリタがインタラクティブに受け入れる任意のコマンドを含めることができ、、、、およびラベルなど、バッチファイル内で条件付き分岐およびループを有効にする構造を使用できます「バッチ」という用語は、「非対話型実行」を意味するバッチ処理に由来しますが、バッチファイルは複数のデータ のバッチを処理しない場合があります。IFFORGOTO

メインフレームおよびミニコンピューターシステム上のジョブ制御言語(JCL)、DCL 、およびその他のシステムと同様に、バッチファイルが追加され、ユーザーがスクリプトを設定して自動化できるようにすることで、特定の通常のタスクに必要な作業を容易にしました。バッチファイルが実行されると、シェルプログラム(通常はCOMMAND.COMまたはcmd.exe)がファイルを読み取り、そのコマンドを通常は1行ずつ実行します。[1] LinuxなどのUnixライクな オペレーティングシステムには、シェルスクリプトと呼ばれる同様の、しかしより柔軟なタイプのファイルがあります[2]

ファイル名拡張子 .batは、DOSおよびWindowsで使用されます。WindowsNTおよびOS / 2にも.cmdが追加されました。他の環境のバッチファイルには、異なる拡張子が付いている場合があります。たとえば、4DOS4OS2および4NT関連のシェルの .btmです。

バッチファイルの詳細な処理は、バージョン間で大幅に変更されています。この記事の詳細の一部はすべてのバッチファイルに適用されますが、その他の詳細は特定のバージョンにのみ適用されます。

バリアント

DOS

DOSでは、バッチファイルは、コマンドラインインターフェイスから名前を入力し、必要なパラメータを入力して↵ Enterキーを押すことで開始できます。DOSがロードされると、ファイルAUTOEXEC.BATが存在する場合は自動的に実行されるため、DOS環境をセットアップするために実行する必要のあるコマンドをこのファイルに配置できます。コンピュータユーザーは、AUTOEXEC.BATファイルでシステムの日付と時刻を設定し、DOS環境を初期化し、常駐プログラムまたはデバイスドライバをロードし、ネットワーク接続と割り当てを初期化します。

.batファイル名拡張子は、コマンドインタープリターCOMMAND.COMによって1行ずつ実行されるコマンドを含むファイルを識別します。これは、手動で入力されたコマンドのリストであるかのように、基本的なプログラミング機能のための追加のバッチファイル固有のコマンドが含まれます。GOTOライン実行のフローを変更 するコマンドを含みます。

初期のWindows

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はMicrosoftについて言及せずにDOSのようなコンソールシェルを参照し、それをDOSと名付けましたが、これはCOMMAND.COMからのバッチファイルの動作方法に関しては何の違いもなかったようです。

OS / 2のバッチ・ファイル・インタープリターは、EXTPROCコマンドもサポートしています。これにより、バッチファイルがEXTPROCファイルで指定されたプログラムにデータファイルとして渡されます。名前付きプログラムはスクリプトファイルにすることができます。これは#に似ています!機構。

Windows NT

Windows 98以前とは異なり、 WindowsNTファミリのオペレーティングシステムはMS-DOSに依存していません。Windows NTは、.CMDまたは.BAT拡張子のいずれかでスクリプトを実行できる拡張32ビットコマンドインタープリター(cmd.exe )を導入しました。Cmd.exeは追加のコマンドを追加し、既存のコマンドをわずかに異なる方法で実装したため、同じバッチファイル(拡張子が異なる)がcmd.exeとCOMMAND.COMで異なる動作をする可能性があります。ほとんどの場合、サポートされていないいくつかのコマンドを使用しない場合、操作は同じです。Cmd.exeのCOMMAND.COMへの拡張機能は、互換性のために無効にすることができます。

Microsoftは、WIN95CMDと呼ばれるWindows 9xおよびME用のcmd.exeのバージョンをリリースし、古いバージョンのWindowsのユーザーが特定のcmd.exeスタイルのバッチファイルを使用できるようにしました。

Windows 8の時点では、cmd.exeはバッチファイルの通常のコマンドインタープリターです。古いCOMMAND.COMは、16ビットプログラムを実行できる32ビットバージョンのWindowsでも実行できます。[nb 1]

ファイル名拡張子

。コウモリ
Microsoftがバッチファイルに使用する最初のファイル名拡張子。この拡張機能は、2つのコマンドインタープリターがバッチファイルを実行する方法が異なるにもかかわらず、COMMAND.COMまたはcmd.exeの下でDOSおよびすべてのバージョンのWindowsで実行されます。
.cmd
Windows NTファミリのバッチファイルに使用され、解釈のためにcmd.exeに送信されます。COMMAND.COMはこのファイル名拡張子を認識しないため、cmd.exeスクリプトが誤って間違ったWindows環境で実行されることはありません。さらに、、、、、、、およびコマンドappend.batファイルから実行されると、エラーが発生した場合にのみ変数の値を変更しますがdpath.cmdファイル内からは、エラーなしで戻った場合でもエラーレベルに影響します。[3]これはIBMのOS / 2でもバッチファイルに使用されます。ftypesetpathassocprompterrorlevel
.btm
4DOS4OS2、4NTおよびTakeCommand使用される拡張機能これらのスクリプトは、行ごとではなく完全に実行できる状態でロードされるため、特に長いスクリプトの方が高速です。[4]

バッチファイルパラメータ

COMMAND.COMとcmd.exeは、バッチジョブのパスと名前、およびバッチジョブ内からの最初の9つの呼び出しパラメーターを参照するために、特別な変数( %0%1から)をサポートしています。も参照してください存在しないパラメータは、長さがゼロの文字列に置き換えられます。これらは環境変数と同様に使用できますが、環境には保存されません。MicrosoftとIBMは、これらの変数を置換パラメーターまたは置換可能パラメーターと呼んでいますが、Digital Research、Novell、およびCalderaは、これらの変数の置換変数[5]という用語を確立しました。JPソフトウェアはそれらをバッチファイルパラメータと呼んでいます。[6]%9SHIFT

このサンプルバッチファイルは、表示されHello World!、プロンプトが表示され、ユーザーがキーを押すのを待ってから終了します。(注:変数を操作しない限り、コマンドが小文字であるか大文字であるかは関係ありません)

@ ECHO OFF
 ECHO Hello World!
一時停止

ファイルを実行するには、ファイル拡張子のサフィックス.bat(またはWindows NTタイプのオペレーティングシステムの場合は.cmd)をプレーンテキスト形式で保存する必要があります。通常、 Microsoftメモ帳などのテキストエディタまたはで動作するワードプロセッサを使用して作成します。プレーンテキストモード。

実行すると、以下が表示されます。

"こんにちは世界"
何かキーを押すと続行します 。

説明

インタプリタは、最初の行から順番に各行を実行します。行の@先頭にある記号は、実行時にプロンプ​​トがそのコマンドを表示するのを防ぎます。このコマンドECHO OFFは、プロンプトを永続的にオフにするか、再度オンになるまでオフにします。多くの場合、結合@ECHO OFFはバッチファイルの最初の行であり、コマンド自体が含まれているため、表示されません。次に、次の行が実行され、ECHO Hello World!コマンドが出力しますHello World!次の行が実行され、PAUSEコマンドが表示されPress any key to continue . . .、スクリプトの実行が一時停止します。キーを押すと、コマンドがなくなるため、スクリプトは終了します。Windowsでは、スクリプトがすでに実行されているコマンドプロンプトから実行される場合ウィンドウの場合、ウィンドウはMS-DOSの場合と同様にプロンプ​​トで開いたままになります。それ以外の場合、ウィンドウは終了時に閉じます。

制限と例外

変数のnull値

変数の展開はテキストでコマンドに置き換えられるため、何も含まない変数は構文から単純に消え、スペースを含む変数は複数のトークンに変わります。これにより、構文エラーやバグが発生する可能性があります。

たとえば、%foo%が空の場合、次のステートメントは次のようになります。

IF  %foo%== bar ECHO Equal

誤った構成として解析します:

IF == bar ECHO Equal

同様に、が%foo%含まれている場合abc def、異なる構文エラーが発生します。

IF abc def == bar ECHO Equal

この問題を防ぐ通常の方法は、変数の展開を引用符で囲んで、空の変数IF ""=="bar"が無効ではなく有効な式に展開されるようにすることですIF ==bar引用符は特別な区切り構文ではないため、変数と比較されるテキストも引用符で囲む必要があります。これらの文字は自分自身を表しています。

IF  " %foo%" == "bar"  ECHO Equal

遅れた!VARIABLE!これらの構文エラーを回避するために、Windows2000以降で使用可能な拡張を使用できます。この場合、IFコマンドが解析された後に値が展開されるため、nullまたはマルチワード変数は構文的に失敗しません。

IF  !foo!== bar ECHO Equal

Windows 2000以降のもう1つの違いは、空の変数(未定義)が置換されないことです。前の例で説明したように、以前のバッチインタープリターの動作では、空の文字列が生成されていました。例:

C:\> Set  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プロセスはGetCommandLineAPI関数を介してコマンドライン全体を単一の文字列として受け取ります。その結果、各Windowsアプリケーションは独自のパーサーを実装して、コマンドライン全体を引数に分割できます。多くのアプリケーションとコマンドラインツールは、それを行うための独自の構文を進化させてきたため、Windowsコマンドラインで メタ文字を引用またはエスケープするための単一の規則はありません。

  • 一部のコマンドでは、スペースが引用符で囲まれていない限り、スペースは引数を区切る区切り文字として扱われます。引用符をアプリケーションに渡す方法には、さまざまな規則があります。
    • 広く使用されている規則はCommandLineToArgvW関数のMicrosoft Visual C ++ランタイムライブラリに組み込まれているコマンドラインパーサーによって実装されます。これは、2 n個のバックスラッシュとそれに続く引用符( ")がn個のバックスラッシュとそれに続く開始/終了引用符を生成するのに対し、(2 n)+1個のバックスラッシュとそれに続く引用符は再びn個のバックスラッシュとそれに続く引用符リテラルを生成するという規則を使用します。 。同じ規則が.NETFramework仕様の一部です。[7]
      • 文書化されていない側面は、引用符で囲まれた文字列の途中にある「」が単一引用符を生成することです。[7](2008年のCRTの変更[msvcr90]は、この文書化されていない引用符の処理を変更しました。[8] )これは、 |のようなcmdメタ文字の解釈を再度有効にせずに引数に引用符を挿入するのに役立ちます。​​および>(cmdは、通常の\ "を引用符のエスケープとして認識しません。引用符が終了したと考えて、引用符を表示するときにこれらの特別な意味を再度有効にします。)
    • もう1つの規則は、単一引用符(")を文字列の一部として含めないことです。ただし、エスケープされた引用符(" "")を文字列の一部にすることができます。[要出典]
    • さらに別の一般的な規則は、Cygwinから派生した移植プログラムの使用に由来します。引用符の前にあるかどうかにかかわらず、バックスラッシュは区別されません。これらの代替コマンドラインパーサーについては、glob(プログラミング)§WindowsおよびDOSを参照してください。[9]
    • cmd.exeおよびのようないくつかの重要なWindowsコマンドはwscript.exe、独自のルールを使用します。[8]
  • 他のコマンドの場合、スペースは区切り文字として扱われないため、引用符は必要ありません。引用符が含まれている場合、それらは文字列の一部になります。これは、 echoなどの一部の組み込みコマンドに適用されます

文字列に引用符が含まれていて、引用符で囲む必要がある別のテキスト行に挿入する場合は、引用符のメカニズムに特に注意する必要があります。

C:\> set  foo = "この文字列は引用符で囲まれています"

C:\> echo  "test 1 %foo%" "test1 
"この文字列は引用符で囲まれています ""

C:\> eventcreate / T警告/ ID 1 / Lシステム/ SO "ソース" / D "例:%foo%"
エラー:引数/オプションが無効です-'文字列'。
「EVENTCREATE /?」と入力します 使用のため。

Windows 2000以降では、解決策は、値内の引用符文字の各出現箇所を一連の3つの引用符文字に置き換えることです。

C:\> set  foo = "この文字列は引用符で囲まれています"

C:\> set  foo = %foo: "=" ""%

C:\> echo  "test 1 %foo%" 
"test 1" ""この文字列は引用符で囲まれています "" ""

C:\> eventcreate / T警告/ ID 1 / Lシステム/ SO "ソース" / D "例:%foo%"
成功: '警告'タイプのイベントが 'ソース'ログ/ソースに作成されます。

文字列内のエスケープ文字

パイプ()文字などの一部の文字は|、コマンドラインに対して特別な意味を持ちます。キャレット^記号を使用してエスケープしない限り 、 ECHOコマンドを使用してテキストとして印刷することはできません。

C:\> Echo foo | bar'bar
 'は、内部または外部コマンド、
操作可能なプログラム、またはバッチファイルとして認識されません。

C:\> Echo foo ^ | bar
 foo | バー

ただし、エスケープ文字を環境変数に挿入すると、エスケープは期待どおりに機能しません。単にエコーされた場合、変数にはライブパイプコマンドが含まれることになります。変数のテキストとして文字を表示するには、キャレット自体とエスケープされた文字の両方をエスケープする必要があります。

C:\> set  foo = bar | baz'baz
 'は、内部または外部コマンド、
操作可能なプログラム、またはバッチファイルとして認識されません。

C:\> set  foo = bar ^ | baz
 C:\> echo  %foo%
'baz'は、内部または外部コマンド、
操作可能なプログラム、またはバッチファイルとして認識されません。

C:\> set  foo = bar ^^^ | baz
 C:\> echo  %foo%
bar | バズ

遅れた!VARIABLE!コマンドの解析後に変数値が展開されるため、Windows 2000以降で使用可能な展開を使用して、環境変数に格納されている特殊文字を表示できます。 CMD /V:ONSETLOCAL ENABLEDELAYEDEXPANSION

C:\> cmd / V:ON
 Microsoft Windows [バージョン6.1.7601] 
Copyright(c)2009 MicrosoftCorporation。全著作権所有。

C:\> set  foo = bar ^ | baz
 C:\> echo  !foo!
バー| バズ

スリープまたはスクリプトによる遅延

TIMEOUTコマンドがWindowsVistaに導入されるまで、PAUSEコマンドはいずれかのキーが押されるまでスクリプトのアクティビティを無期限に停止するため、時間制限のある一時停止を実装する簡単な方法はありませんでした。

多くの回避策が可能でしたが[10]、通常は一部の環境でのみ機能しました。CHOICEコマンドは古いDOSバージョンでPINGは使用できず、TCP / IPがインストールされている場合にのみ使用できました。Microsoftから入手できるソリューションはありませんでしたが、他のソースからいくつかの小さなユーティリティプログラムをインストールできました。商用の例としては、1988年のNorton Utilities Batch Enhancer(BE)コマンドBE DELAY 18が1秒間待機するか、無料の94バイトのWAIT.COM [11]WAIT 55秒間待機してから、制御をスクリプトに戻します。このようなプログラムのほとんどは16ビットの.COMファイルであるため、64ビットのWindowsとは互換性がありません。

CR / LFを取り除いたテキスト出力

通常、印刷されるすべてのテキストには、各行の終わりにキャリッジリターン(CR)とラインフィード(LF) の制御文字が自動的に追加されます。

  • batchtest.bat
    @エコーフー@エコーバー
    _ _
    
    C:\ > batchtest.batfoo
    バー
    
    

2つのechoコマンドが同じコマンドラインを共有するかどうかは関係ありません。CR / LFコードは、出力を別々の行に分割するために挿入されます。

C:\> @ echoメッセージ1 &@ echoメッセージ2
メッセージ1
メッセージ2

Windows 2000以降で発見されたトリックは、入力用の特別なプロンプトを使用して、テキストの末尾にCR / LFを付けずにテキストを出力することです。この例では、CR / LFはメッセージ1には続きませんが、行2と行3には続きます。

  • batchtest2.bat
    @ echo off
     set  / p  = "メッセージ1" < nulecho
    メッセージ
    2echoメッセージ3
    
    C:\> batchtest2.bat
    メッセージ1メッセージ2
    メッセージ3
    

これを使用して、CR / LFを末尾に追加せずにデータをテキストファイルに出力できます。

C:\> set  / p  = "Message 1" < nul > data.txt
 C:\> set  / p  = "Message 2" < nul >> data.txt
 C:\> set  / p  = "Message 3" < nul >> data.txt
 C:\> typedata.txtメッセージ1
メッセージ2メッセージ3

ただし、この削除されたCR / LFプロンプト出力を環境変数に直接挿入する方法はありません。

ショートカットからのUniformNaming Convention(UNC)作業ディレクトリの設定

現在の作業ディレクトリとしてUNCパスを使用するコマンドプロンプトを表示することはできません。例えば\\server\share\directory\

コマンドプロンプトでは、ドライブ文字を使用して作業ディレクトリを割り当てる必要があります。これにより、サーバーのUNC共有に保存されている複雑なバッチファイルの実行がより困難になります。バッチファイルはUNCファイルパスから実行できますが、作業ディレクトリのデフォルトはですC:\Windows\System32\

Windows 2000以降では、回避策は、コマンド拡張機能を使用してPUSHDandPOPDコマンドを使用することです。[nb 2]

デフォルトで有効になっていない場合は/E:ON、コマンドインタープリターのスイッチを使用してコマンド拡張を一時的に有効にすることができます。

したがって、UNC共有でバッチファイルを実行し、一時的なドライブ文字をUNC共有に割り当て、UNC共有をバッチファイルの作業ディレクトリとして使用するには、次のようなWindowsショートカットを作成できます。

  • 目標:%COMSPEC% /E:ON /C "PUSHD """\\SERVER\SHARE\DIR1\DIR2\""" & BATCHFILE.BAT & POPD"

このショートカットの作業ディレクトリ属性は無視されます。

これにより、Windows Vista以降のユーザーアカウント制御(UAC)に関連する問題も解決されます。管理者がログオンしてUACが有効になっている場合、右クリックのファイルコンテキストメニューを使用して、ネットワークドライブ文字から管理者としてバッチファイルを実行しようとすると、操作が予期せず失敗します。これは、昇格されたUAC特権アカウントコンテキストにネットワークドライブ文字が割り当てられておらず、エクスプローラシェルまたはログオンスクリプトを介して昇格されたコンテキストにドライブ文字を割り当てることができないためです。ただし、上記のPUSHD/を使用してバッチファイルへのショートカットを作成するPOPD構築し、ショートカットを使用してバッチファイルを管理者として実行すると、一時ドライブ文字が昇格されたアカウントコンテキストで作成および削除され、バッチファイルが正しく機能します。

次の構文は、現在のバッチスクリプトのパスに正しく展開されます。

%〜dp0

UNCのデフォルトパスは、古いプログラムをクラッシュさせるために使用されていたため、デフォルトでオフになっています。[12]

[12]DisableUNCCheckDwordレジストリ値により、デフォルトのディレクトリをUNCにすることができます。コマンドは変更を拒否しますが、CmdへのショートカットまたはStartコマンドを使用してデフォルトディレクトリにUNCパスを配置します。共有は管理者用です)。 HKEY_CURRENT_USER\Software\Microsoft\Command ProcessorCDstart "" /d \\127.0.0.1\C$ "cmd /k"C$

文字セット

バッチファイルは、コンピュータで定義されているOEM文字セットを使用します(コードページ437など) 。これらの非ASCII部分は、Windowsで使用されているUnicodeまたはWindowsの文字セットと互換性がないため、注意が必要です。[13]英語以外のファイル名は、DOS文字セット互換エディターを介して入力された場合にのみ機能します。このセット以外の文字を含むファイル名は、バッチファイルでは機能しません。

Unicodeなどの内部コマンドからファイルパイプに出力を取得するにdirは、このコマンドを使用できますcmd /Uたとえば、 UTF-16 LEエンコーディング cmd /U /C dir > files.txtで、正しいWindows文字を含むディレクトリリストを含むファイルを作成します。

バッチウイルスとマルウェア

他のプログラミング言語と同様に、バッチファイルは悪意を持って使用される可能性があります。単純なトロイの木馬フォーク爆弾は簡単に作成でき、バッチファイルはhostsファイルを変更することでDNSポイズニングの形式を実行できます。バッチウイルスが発生する可能性があり、Windowsの自動実行機能を使用してUSBフラッシュドライブを介して拡散することもあります。[14]

バッチファイルの次のコマンドは、最初に確認を求めずに、現在のディレクトリ(フォルダ)のすべてのデータを削除します。

デル/Q*.*

これらの3つのコマンドは単純なフォーク爆弾であり、継続的に複製して利用可能なシステムリソースを使い果たし、システムの速度を低下させたり、クラッシュさせたりします。

TOP 
 start  ""  %0 
 goto  TOP

その他のWindowsスクリプト言語

.cmdファイルを解釈するcmd.exeコマンドプロセッサは、少なくともWindows10までのすべての32ビットおよび64ビットバージョンのWindowsでサポートされています.BATファイルを解釈するCOMMAND.EXEは、少なくともWindows10までのすべての16ビットおよび32ビットバージョンでサポートされていました。[nb3]

Windowsで利用できる他の、後で、より強力なスクリプト言語があります。ただし、これらを使用するには、スクリプト言語インタープリターをインストールする必要があります。

拡張子のないファイル名を入力すると、スクリプトファイルが実行されます。たとえば、、、、などが存在するDoThis場合DoThis.com解釈を管理する優先順位の規則があります。デフォルトでは、最高の優先度があります。このデフォルトの順序は、ユーザーが設定可能なPATHEXT環境変数によって新しいオペレーティングシステムで変更される場合があります。 DoThis.exeDoThis.batDoThis.cmdDoThis.com

も参照してください

メモ

  1. ^ COMMAND.COMが(\ WINDOWS \ SYSTEM32ディレクトリで)利用可能であることを確認するにCOMMAND.COMは、32ビットのWindows7コマンドプロンプトで入力します。
  2. ^ "コマンド拡張機能が有効になっている場合、PUSHDコマンドは通常のドライブ文字とパスに加えてネットワークパスを受け入れます。ネットワークパスが指定されている場合、PUSHDは指定されたネットワークリソースを指す一時的なドライブ文字を作成し、現在のドライブを変更します。ディレクトリ、新しく定義されたドライブ文字を使用します。一時的なドライブ文字は、最初に見つかった未使用のドライブ文字を使用して、Z:以降に割り当てられます。」--Windows7でのPUSHDのヘルプ
  3. ^ CMD.EXEとCOMMAND.COMの可用性は、任意のバージョンのWindowsで呼び出すことで確認できます(COMMAND.COMは64ビットバージョンではありません。16をサポートするオプションを指定してインストールした場合、おそらくWindows 832ビットバージョンでのみ使用できます-ビットプログラム)。

参考文献

  1. ^ 「バッチファイルの使用:スクリプト;管理サービス」Technet.microsoft.com。2005-01-21 2012年11月30日取得
  2. ^ ヘンリー-ストッカー、サンドラ(2007-07-18)。「Unixスクリプトスキルを使用してバッチファイルを作成する」itworld.comITワールド2018年6月13日取得
  3. ^ 「batとcmdの違い| WWoIT-ウェインのITの世界」waynes-world-it.blogspot.fr2012-11-15 2012年11月30日取得
  4. ^ 「btmファイル拡張子::。btmファイルタイプに関するすべて」Cryer.co.uk 2012年11月30日取得
  5. ^ Caldera DR-DOS 7.02ユーザーガイドCaldera、Inc.、1998 [1993、1997]、2016-11-05にオリジナルからアーカイブ、 2013-08-10を取得
  6. ^ 兄弟、ハーディン; ローソン、トム; Conn、Rex C .; ポール、マティアスR。; 染料、チャールズE。; Georgiev、Luchezar I.(2002-02-27)。4DOS8.00オンラインヘルプ
  7. ^ a b ".NET Coreランタイム:System.Diagnostics.Process.Unix"GitHub 2020-02-11を取得inQuotes領域内の2つの連続した二重引用符は、リテラルの二重引用符になります(パーサーはinQuotes領域に残されます)。この動作はcode:ParseArgumentsIntoListの仕様の一部ではありませんが、CRTおよび.NETFrameworkと互換性があります。
  8. ^ a b Deley、David。「コマンドラインパラメータの解析方法」
  9. ^ 「子プロセスのドキュメント、セクションWindowsコマンドライン、NodeJS PR#29576」GitHub 2020-02-11を取得
  10. ^ 「遅延を行う方法」、ericphelps.com
  11. ^ DOS用のユーティリティ、WAIT.ZIP(WAIT.COMのアーカイブ)およびその他のプログラムへのリンク
  12. ^ a b https://support.microsoft.com/en-us/kb/156276 [リンク切れ]
  13. ^ チェン、レイモンド「コードページに注目してください」Microsoft
  14. ^ http://www.explorehacking.com/2011/01/batch-files-art-of-creating-viruses.html
  15. ^ 「WindowsPowerShell-UnixがWindowsに登場」Geekswithblogs.net 2012年11月30日取得

外部リンク