Параметры C # Process.Start усечены - PullRequest
1 голос
/ 29 июля 2009

У меня есть усеченные параметры при передаче очень длинных путей к файлам. Мне нужно запустить программу и передать все через параметры команды - иногда она просто усекает команду. Он делает это глобально - так что это проблема не только для каждого параметра, но и для целого.

редактирование: Проблема, вероятно, заключается в ограничении длины командной строки, как указано monkey_p . Вопрос в том, как это обойти? (Смена рабочего каталога невозможна, поскольку файлы могут существовать в разных местах).

Ответы [ 2 ]

2 голосов
/ 29 июля 2009

Я не уверен, что ваш вопрос, но есть ограничение в командной строке. Это же ограничение будет действовать для Process.Start (команда, args)

На компьютерах под управлением Microsoft Windows XP или позже, максимальная длина строка, которую вы можете использовать в команде подсказка 8191 символов. На компьютеры под управлением Microsoft Windows 2000 или Windows NT 4.0, максимум длина строки, которую вы можете использовать в командной строке 2047 символы.

1 голос
/ 29 июля 2009

Как обойти ограничение до обойти ограничение, использовать один или больше из следующих методов (как соответствует вашей ситуации):

  • Изменить программы, которые требуют длинных команд линии, чтобы они использовали файл, который содержит информацию о параметрах, а затем включите имя файла в командной строке.

Например, вместо использования ExecutableFile.exe Параметр1 Parameter2 ... ParameterN командная строка в командном файле измените программу на использовать командную строку, которая похожа на следующая командная строка, где ParameterFile - это файл, который содержит требуемые параметры (параметр1 параметр2 ... параметрN):

ExecutableFile.exe c:\temp\ParameterFile.txt

  • Изменить программы, которые используют большую среду переменные, так что среда переменные содержат меньше, чем либо 2047 или 8191 символов (как соответствует вашей операционной системе).

Например, если среда PATH переменная содержит больше, чем либо 2047 или 8191 символов (как соответствует вашей операционной системе), используйте один или несколько из следующих методы уменьшения количества символы:

  • Используйте более короткие имена для папки и файлы.
  • Уменьшить глубину деревья папок.
  • Храните файлы в меньшем количестве папки, так что меньше папок требуется в среде PATH переменная.
  • Возможно расследование методы, которые вы можете использовать, чтобы уменьшить зависимость PATH для определения местоположения .dll файлы.

от Служба поддержки Microsoft , поэтому для меня ничего не помогло - кажется, что этот предел нельзя увеличить, и нет другого способа запустить его ...

Я попытаюсь сделать следующее: Запомните путь к каждому файлу, переместите их в какой-нибудь DIR, а затем запустите программу с CurrentDirectory, установленной в DIR, и просто передайте имена файлов, а после завершения программы переместите файлы обратно на свое место - безобразно, безобразно, безобразно, я знаю, но, похоже, другого пути нет ...

...