Подтвердить что ты не робот

Ошибка "Входная строка слишком длинная" в файле BAT

У меня возникла проблема с исполнением bat файла. По прошествии некоторого времени я получаю сообщение "слишком длинная строка ввода".

Структура файла bat проста. Существует основной файл bat, который вызывает 10 других файлов bat, которые отвечают за обновление данных моих системных модулей. В файлах bat данных обновления есть много вызовов для команды (.cmd файла) моей системы, которая отвечает за обновление данных с помощью некоторых вычислений.

Дело в том, что, когда процесс выполнялся на сервере Windows 2003 Server, все было в порядке. Нет ошибок.

Затем, когда он был обновлен до Windows 2008 Server, я запускаю основной файл bat, через несколько часов я получил сообщение "Ошибка ввода слишком длинная". Я даже не могу выполнить любую команду, включенную в обновленные бит данных вручную в этом окне cmd. Но если я закрою окно cmd и открою новый, я смогу выполнить команды без ошибок.

У кого-то была такая же проблема? Или решение?

Спасибо заранее.

4b9b3361

Ответ 1

У меня была такая же проблема при выполнении сборки script в CMD-окне. Примерно в 13 раз я получил ту же ошибку. Конструкция script должна была убедиться, что vcvarsall.bat запущен, поэтому он запускает vcvarsall.bat каждый раз.

vcvarsall.bat недостаточно умен, чтобы добавлять вещи в path, если они еще не существуют, поэтому добавлена ​​куча повторяющихся записей.

Мое решение состояло в том, чтобы добавить проверочную проверку, если я определен, для переменной среды, которую, как мне известно, устанавливается vcvarsall.bat...

if not defined DevEnvDir (
    call vcvarsall.bat
)

Проверьте переменную окружения пути после каждого прогона и посмотрите, растет ли она. Если это так и есть дубликаты, вам нужно быть умным о добавлении материала в path. Есть несколько способов быть умными.

Ответ 2

Я случайно получил эту ошибку сразу после запуска одного и того же набора команд (остановить/запустить сервер приложений) несколько раз.

Ошибка прекратилась, когда я открыл новую командную строку и попробовал команды из новой консоли командной строки.

Ответ 3

Я понимаю, что это довольно старая проблема, но другой проблемой, с которой я столкнулся, было " в конце команды, которую я вызывал. Я пытался вызвать:

"C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\..\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe""

Если вы заметили, у меня есть два " в конце строки. Это вызывало мои проблемы (Notepad++ включало его, когда я набирал кавычки). Удалил это, все хорошо. Опять же, может быть, не ваша проблема, но если кто-то остальное приходит в поисках информации, и больше ничего не работает, проверьте это. :)

Ответ 4

На эту тему есть статья в базе знаний Windows. Они не упоминают сервер Windows 2008, но упоминают разницу в размерах между другими версиями ОС, поэтому неудивительно, что между 2003 и 2008 годами была разница.

Что касается решения проблемы, некоторые из их предложений включают в себя:

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

Вы можете прочитать всю статью, если хотите узнать, что еще они могут сказать, но именно эти предложения, скорее всего, применимы к вам.

Ответ 5

Это также может произойти, если пробелы в вашем файле (ansi character 0x20) - действительно неразрывные пробелы (у меня 0xA0, но ваш может варьироваться). Это может произойти, если вы копируете/вставляете из Интернета в редактор UTF-8.

Результат зависит от текущей кодовой страницы окон, вашего редактора и т.д. Исправить:

  • Используйте шестнадцатеричный редактор
  • Посмотрите, как представлены пространства.
  • Поиск и замена вашего представления

Я использовал HxD для поиска и замены 0xA0 до 0x20.

Ответ 6

Я столкнулся с этим также.

Я пытался запустить vcvars.bat, как другие здесь, кажется, пытаются.

Основная проблема для меня заключалась в том, что моя переменная PATH была загрязнена повторениями и без того довольно длинного пути. Исправление моего пути, казалось, решило проблему для меня (в новом терминале, конечно). Обратите внимание, что это исправление не относится к vcvars.bat или к чему-либо связанному с Visual Studio.

Мне любопытно, если решение @Cookie Butter - это обходной путь и основная проблема та же.