Ограничения на размер файла и длину строки для пакетных файлов Windows - PullRequest
8 голосов
/ 01 августа 2009

Я создаю пакетный файл Windows, который может стать довольно большим, скажем, несколько мегабайт. Я искал возможные ограничения относительно максимального размера файла и максимальной длины строки в командном файле, но я не смог ничего найти. Есть практический опыт?

Ответы [ 6 ]

9 голосов
/ 01 августа 2009

Я думаю, что размер файла может быть до 2 ГБ, возможно, даже больше. Это интерпретируемый язык, поэтому, если все сделано правильно, предел размера файла должен быть пределом размера файловой системы. У меня никогда не было ошибок из-за того, что пакетные файлы были слишком большими, а некоторые из тех, что я создал, имели размер несколько МБ.

Должен быть предел длины строки, но он должен быть больше 256. Это легко проверить, просто сделайте некоторое «set A = 123456789012 ... endofline», после этого «echo% A%», и вы посмотрим, как далеко вы сможете пройти.

Он работает для меня с очень длинными строками (около 4 КБ), но при 8 КБ echo выдает сообщение «Слишком длинная строка», поэтому 8192 байта должны быть ограничены.

Теперь проверено на размер файла, также проверено с "echo off", тысячами установленных строк, после этого "echo end", и это сработало для файла размером 11 МБ (хотя для завершения потребовалось несколько секунд :) - без ограничений здесь видно.

110 МБ тоже сработало. Этого достаточно? ;)

4 голосов
/ 15 июня 2016

Максимальная длина любой командной строки (или переменной) в CMD составляет 8191 символов .

2 голосов
/ 13 июля 2011

Одна строка не должна превышать 8192 символа, даже после расширения выражений %var% или !var!, в противном случае вы получили ошибку.

Не существует (известного) ограничения для самого файла.

2 голосов
/ 01 августа 2009

Некоторые идеи, не обязательно взаимоисключающие:

  • Переключиться на PowerShell .
  • Переключитесь на приложение, управляемое данными, так что все переменные хранятся в файле данных ( CSV , текст, что угодно), и в результате вы можете получить меньший шаблонный скрипт, который открывает файл данных и работает.
0 голосов
/ 13 июля 2011

По данным Microsoft, размер пакетного файла не ограничен. Однако строка командного файла не должна превышать 127 байт, иначе она будет усечена при выполнении.

См. Максимальная длина строки и количество для пакетных файлов & CONFIG.SYS

0 голосов
/ 02 августа 2009

Должно работать как минимум до 2 ГБ. Строки читаются непосредственно из файла BAT на диске (кеширование отсутствует участвует). Я делаю это заявление из-за следующего:

На самом деле вы можете редактировать BAT-файл во время его работы! И это будет работать, даже если текстовый редактор может переименовать оригинал и сохраните новую версию в новом месте на диск. Пока вы осторожны, чтобы не вставить текст выше текущая команда Линии могут быть изменено / вставлено / удалено ниже текущего выполняющегося команда и новые строки будут выполнены. я имею часто это делается с помощью файлов BAT, содержащих длинный список Команды wget, каждая из которых занимает десятки минут.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...