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

この記事では、コマンド プロンプト (コマンド プロンプト) で使用する文字列の長さに対する制限について説明Cmd.exe。 また、この制限を回避するために使用できるメソッドも提供します。

適用対象:  Windows Server 2012R2、Windows Server 2008 R2 Service Pack 1、Windows 7 Service Pack 1
元の KB 番号:   830473

詳細

コマンド プロンプトで使用できる文字列の最大長は 8191 文字です。

この制限は、次の場合に適用されます。

  • コマンド ライン
  • PATH 変数など、他のプロセスによって継承される個々の環境変数
  • すべての環境変数の拡張

コマンド プロンプトを使用してバッチ ファイルを実行する場合、この制限はバッチ ファイル処理にも適用されます。

次の例は、コマンド プロンプトで実行するコマンド、およびバッチ ファイルで使用するコマンドにこの制限がどのように適用されるのか示しています。

  • コマンド プロンプトでは、次のコマンド ラインの合計長に 8191 文字を超えることはできません。

    cmd.exe /k ExecutableFile.exe parameter1, parameter2... parameterN
    
  • バッチ ファイルでは、次のコマンド ラインの合計長に 8191 文字を超えることはできません。

    cmd.exe /k ExecutableFile.exe parameter1, parameter2... parameterN
    

    この制限は、コマンド プロンプトを使用してバッチ ファイルを実行するときにバッチ ファイルに含まれるコマンド ラインに適用されます。

  • コマンド プロンプトで、展開後の合計長が EnvironmentVariable1 EnvironmentVariable2 EnvironmentVariable3 8191 文字を超えることはできません。

    c:> set EnvironmentVariable1 = EnvironmentVariable2 EnvironmentVariable3
    
  • バッチ ファイルでは、パラメーターを展開した後の次のコマンド ラインの合計長に 8191 文字を超えることはできません。

    ExecutableFile.exe parameter1 parameter2
    
  • 環境変数の Win32 の制限は 32,767 文字ですが、コマンド プロンプトは親プロセスから継承され、8191 文字 (オペレーティング システムに応じて) の独自の制限よりも長い環境変数を無視します。 関数の詳細については SetEnvironmentVariable 、「SetEnvironmentVariableA 関数」を参照してください

制限を回避する方法

この制限を回避するには、状況に応じて、次の 1 つ以上の方法を使用します。

  • 長いコマンド ラインを必要とするプログラムを変更して、パラメーター情報を含むファイルを使用し、コマンド ラインにファイルの名前を含める。

    たとえば、バッチ ファイルでコマンド ラインを使用する代わりに、次のコマンド ラインに似たコマンド ラインを使用するプログラムを変更します。ParameterFile は、必要なパラメーター ExecutableFile.exe Parameter1 Parameter2... ParameterN (parameter1 parameter2.. ) を含むファイルです。ParameterN:

    ExecutableFile.exe c:\temp\ParameterFile.txt
    
  • 大きな環境変数を使用するプログラムを変更して、環境変数に 8191 文字未満が含まれる。

    たとえば、PATH 環境変数に 8191 文字を超える文字が含まれている場合は、次の 1 つ以上のメソッドを使用して文字数を減らします。

    • フォルダーとファイルには短い名前を使用します。
    • フォルダー ツリーの深度を減らします。
    • PATH 環境変数で必要なフォルダーを少なくするために、ファイルを少ないフォルダーに格納します。
    • ファイルを見つけ出す PATH の依存関係を減らすために使用できる可能性.dllします。