Udostępnij za pośrednictwem


Ograniczenie ciągu wiersza polecenia (Cmd. exe)

W tym artykule omówiono ograniczenie długości ciągów używanych w wierszu polecenia w wierszu polecenia (Cmd.exe). Udostępnia również metody, których można użyć do obejścia tego ograniczenia.

Dotyczy: Windows Server 2012 R2, Windows Server 2008 R2 z dodatkiem Service Pack 1, Windows 7 z dodatkiem Service Pack 1
Oryginalny numer KB: 830473

Więcej informacji

Maksymalna długość ciągu, którego można użyć w wierszu polecenia, wynosi 8191 znaków.

To ograniczenie dotyczy:

  • wiersz polecenia
  • poszczególne zmienne środowiskowe dziedziczone przez inne procesy, takie jak zmienna PATH
  • wszystkie rozszerzenia zmiennych środowiskowych

Jeśli używasz wiersza polecenia do uruchamiania plików wsadowych, to ograniczenie dotyczy również przetwarzania plików wsadowych.

Przykłady

W poniższych przykładach pokazano, jak to ograniczenie dotyczy poleceń uruchamianych w wierszu polecenia oraz poleceń używanych w pliku wsadowym.

  • W wierszu polecenia łączna długość następującego wiersza polecenia nie może zawierać więcej niż 8191 znaków:

    cmd.exe /k ExecutableFile.exe parameter1, parameter2... parameterN
    
  • W pliku wsadowym łączna długość następującego wiersza polecenia nie może zawierać więcej niż 8191 znaków:

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

    To ograniczenie dotyczy wierszy poleceń zawartych w plikach wsadowych podczas uruchamiania pliku wsadowego przy użyciu wiersza polecenia.

  • W wierszu polecenia łączna długość po rozwinięciu EnvironmentVariable1 EnvironmentVariable2 i EnvironmentVariable3 nie może zawierać więcej niż 8191 znaków:

    c:> set EnvironmentVariable1 = EnvironmentVariable2 EnvironmentVariable3
    
  • W pliku wsadowym łączna długość następującego wiersza polecenia po rozwinięciu parametrów nie może zawierać więcej niż 8191 znaków:

    ExecutableFile.exe parameter1 parameter2
    
  • Mimo że ograniczenie win32 zmiennych środowiskowych wynosi 32 767 znaków, wiersz polecenia ignoruje wszelkie zmienne środowiskowe dziedziczone z procesu nadrzędnego i są dłuższe niż własne ograniczenia 8191 znaków (odpowiednio do systemu operacyjnego). Aby uzyskać więcej informacji na temat SetEnvironmentVariable funkcji, zobacz SetEnvironmentVariableA, funkcja.

Jak obejść ograniczenie

Aby obejść ograniczenie, użyj co najmniej jednej z następujących metod, odpowiednio do twojej sytuacji:

  • Zmodyfikuj programy, które wymagają długich wierszy polecenia, tak aby używały pliku zawierającego informacje o parametrach, a następnie dołączyć nazwę pliku w wierszu polecenia.

    Na przykład zamiast używać ExecutableFile.exe Parameter1 Parameter2... ParameterN wiersza polecenia w pliku wsadowym, zmodyfikuj program tak, aby używał wiersza polecenia podobnego do następującego wiersza polecenia, gdzie ParametrFile jest plikiem zawierającym wymagane parametry (parametr1 parametr2... ParametrN):

    ExecutableFile.exe c:\temp\ParameterFile.txt
    
  • Zmodyfikuj programy, które używają dużych zmiennych środowiskowych, tak aby zmienne środowiskowe zawierały mniej niż 8191 znaków.

    Jeśli na przykład zmienna środowiskowa PATH zawiera więcej niż 8191 znaków, użyj co najmniej jednej z następujących metod, aby zmniejszyć liczbę znaków:

    • Używaj krótszych nazw folderów i plików.
    • Zmniejsz głębokość drzew folderów.
    • Przechowuj pliki w mniejszej liczbie folderów, aby mniej folderów było wymaganych w zmiennej środowiskowej PATH.
    • Zbadaj możliwe metody, których można użyć, aby zmniejszyć zależność ścieżki do lokalizowania plików .dll.