コマンド プロンプト (cmd.exe) のコマンドライン文字列の制限

適用対象: Windows Server 2012 R2 StandardWindows Server 2012 R2 DatacenterWindows Server 2012 R2 Essentials

概要


この資料では、コマンド プロンプト (Cmd.exe) と、この制限を回避するために使用できる方法でコマンド プロンプトで使用する文字列の長さに制限について説明します。

詳細


Microsoft Windows XP 以降の Windows を実行しているコンピューターでは、コマンド プロンプトで使用できる文字列の最大長は 8191 文字です。Microsoft Windows 2000 または Windows NT 4.0 を実行するコンピューターでは、コマンド プロンプトで使用できる文字列の最大長は、2047 文字です。

この制限は、コマンドライン、他のプロセス、およびすべての環境変数の展開によって継承される個々 の環境変数 (PATH 変数など) に適用されます。コマンドプロンプトからバッチ ファイルを実行する場合は、この制限はバッチ ファイルの処理にも適用されます。

コマンド プロンプトで実行するコマンド、およびバッチ ファイルで使用するコマンドにこの制限がどのように適用されるのかについての例を次の一覧に一部表示します。
  • コマンド プロンプトでは、コマンド プロンプトで使用する次のコマンド ラインの長さの合計が (オペレーティング システムに応じて) 2047 または 8191 を超える文字を含むことはできません。
    cmd.exe/k実行.exeパラメーター 1パラメーター 2 .parameterN
  • バッチ ファイルでは、バッチ ファイルで使用する次のコマンド ラインの長さの合計は (オペレーティング システムに応じて) 2047 文字または 8191 文字を超えることはできません。
    cmd.exe/k実行.exeパラメーター 1パラメーター 2 .parameterN
    この制限は、コマンド プロンプトからバッチ ファイルを実行した場合、バッチファイルに含まれているコマンド ラインにも適用されます。
  • コマンド プロンプトで、全体の長さ
    EnvironmentVariable1を展開しました後
    EnvironmentVariable2
    EnvironmentVariable3は、(必要に応じて使用するオペレーティング システム) の 2047 または 8191 文字を超えるに含めることはできません。
    c:> set EnvironmentVariable1=EnvironmentVariable2EnvironmentVariable3
  • バッチ ファイルでは、コマンドラインで環境変数を展開した後、次のコマンド行の長さの合計は、2047 または 8191 文字 (使用するオペレーティング システムによる) を超えることはできません。
    ExecutableFile.exe parameter1parameter2
  • コマンド プロンプトがある親プロセスから継承され、2047 に応じて文字または 8191 文字 (の独自の制限よりも長い環境変数を無視する環境変数の Win32 の制限は 32,767 文字が、オペレーティング ・ システム)。SetEnvironmentVariable関数の詳細については、次のマイクロソフト Web サイトを参照してください。

制限を回避する方法

この制限を回避するには、(状況に応じて) 以下の方法の 1 つ以上を使用します。
  • パラメーター情報を含むファイルを使用できるように、長いコマンド ラインを必要とするプログラムを変更し、コマンド ラインにファイル名を入れます。

    実行.exeパラメーター 1パラメーター 2を使用するのではなく、たとえば、.ParameterN コマンドラインをバッチ ファイルで次のコマンドラインは、次のようなコマンドラインを使用するプログラムを変更する場所
    パラメーター ファイルは、必要なパラメーター (パラメーター 1 パラメーター 2が含まれるファイルです。
    ...ParameterN):
    ExecutableFile.exe c:\temp\ParameterFile.txt
  • 環境変数に (オペレーティング システムに応じて) 2047 または 8191 よりも小さい文字数が含まれるように、大規模な環境変数を使用するプログラムを変更します。

    たとえば、PATH 環境変数に (オペレーティング システムに応じて) 2047 または 8191 を超える文字が含まれる場合、文字数を減らすために以下の方法を使用します。
    • フォルダーとファイルの短い名前を使用します。
    • フォルダー ツリーの階層を浅くします。
    • PATH 環境変数に必要なフォルダー数が少なくなるように、少ないフォルダーにファイルを保存します。
    • .Dll ファイルを検索するためのパスへの依存を減らすために使用することができる方法を検討してください。