命令提示字元 (Cmd. exe) 命令行字串限制

本文討論您在命令提示字元 (Cmd.exe) 中從命令提示字元使用的字元串長度限制。 它也提供可用來解決這項限制的方法。

適用於:Windows Server 2012 R2、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
    

    當您使用命令提示字元執行批次處理檔時,此限制會套用至批處理檔中所包含的命令列。

  • 在命令提示字元中,展開EnvironmentVariable2EnvironmentVariable3之後 的總EnvironmentVariable1長度不能超過8191個字元:

    c:> set EnvironmentVariable1 = EnvironmentVariable2 EnvironmentVariable3
    
  • 在批處理檔中,展開參數之後,下列命令行的總長度不能超過 8191 個字元:

    ExecutableFile.exe parameter1 parameter2
    
  • 即使環境變數的 Win32 限制為 32,767 個字元,命令提示字元仍會忽略繼承自父進程且超過其本身限制 8191 個字元的任何環境變數, (適用於操作系統) 。 如需函式的 SetEnvironmentVariable 詳細資訊,請參閱 SetEnvironmentVariableA 函式

如何解決限制

若要解決此限制,請視方式使用下列一或多個方法:

  • 修改需要長命令行的程式,使其使用包含參數資訊的檔案,然後在命令行中包含檔名。

    例如,不要在批處理檔中使用 ExecutableFile.exe Parameter1 Parameter2... ParameterN 命令行,而是修改程式以使用類似下列命令行的命令行,其中 ParameterFile 是包含 parameter1 parameter2 參數 (必要參數的檔案。ParameterN) :

    ExecutableFile.exe c:\temp\ParameterFile.txt
    
  • 修改使用大型環境變數的程式,讓環境變數包含少於8191個字元。

    例如,如果PATH環境變數包含超過8191個字元,請使用下列一或多個方法來減少字元數:

    • 針對資料夾和檔案使用較短的名稱。
    • 減少資料夾樹狀結構的深度。
    • 將檔案儲存在較少的資料夾中,以便PATH環境變數中需要較少的資料夾。
    • 調查可用來減少PATH相依性以尋找 .dll 檔案的可能方法。