명령 프롬프트(Cmd. exe) 명령줄 문자열 제한

이 문서에서는 명령 프롬프트(Cmd.exe)의 명령 프롬프트에서 사용하는 문자열의 길이 제한에 대해 설명합니다. 또한 이 제한을 해결하는 데 사용할 수 있는 메서드도 제공합니다.

적용 대상: Windows Server 2012 R2, Windows Server 2008 R2 서비스 팩 1, Windows 7 서비스 팩 1
원본 KB 번호: 830473

추가 정보

명령 프롬프트에서 사용할 수 있는 문자열의 최대 길이는 8191자입니다.

이 제한 사항은 다음에 적용됩니다.

  • 명령줄
  • PATH 변수와 같은 다른 프로세스에서 상속되는 개별 환경 변수
  • 모든 환경 변수 확장

명령 프롬프트를 사용하여 일괄 처리 파일을 실행하는 경우 이 제한 사항은 일괄 처리 파일 처리에도 적용됩니다.

예제

다음 예제에서는 명령 프롬프트에서 실행하는 명령과 일괄 처리 파일에서 사용하는 명령에 이 제한이 적용되는 방법을 보여 줍니다.

  • 명령 프롬프트에서 다음 명령줄의 총 길이는 8191자를 초과할 수 없습니다.

    cmd.exe /k ExecutableFile.exe parameter1, parameter2... parameterN
    
  • 일괄 처리 파일에서 다음 명령줄의 총 길이는 8191자를 초과할 수 없습니다.

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

    이 제한은 명령 프롬프트를 사용하여 일괄 처리 파일을 실행할 때 일괄 처리 파일에 포함된 명령줄에 적용됩니다.

  • 명령 프롬프트에서 확장 EnvironmentVariable2 한 후의 EnvironmentVariable1 총 길이는 EnvironmentVariable3 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 환경 변수에 필요한 폴더 수가 줄어들도록 더 적은 수의 폴더에 파일을 저장합니다.
    • .dll 파일을 찾기 위한 PATH의 종속성을 줄이는 데 사용할 수 있는 가능한 방법을 조사합니다.