Estoy generando un archivo por lotes de Windows que puede llegar a ser bastante grande, digamos unos megabytes. Busqué límites posibles con respecto al tamaño máximo de archivo y la longitud máxima de una línea en un archivo por lotes, pero no pude encontrar nada. ¿Alguna experiencia práctica?Límites de tamaño de línea y archivo para archivos por lotes de Windows
Respuesta
Creo que el tamaño del archivo puede ser de hasta 2 GB, tal vez incluso más. Es un lenguaje interpretado, por lo que si se hace correctamente, el límite del tamaño del archivo debe ser el límite del sistema de archivos. Nunca tuve ningún error con los archivos por lotes que son demasiado grandes, y algunos de los que creé tenían varios MB de tamaño.
Debe haber un límite de longitud de línea, pero debería ser más de 256. Esto puede probarse fácilmente, simplemente haga un "conjunto A = 123456789012 ... endofline", después de eso "echo% A%", y Verás qué tan lejos puedes llegar.
Funciona para mí con líneas muy largas (alrededor de 4K), pero en 8K echo
aparece un mensaje, "Línea demasiado larga", por lo que 8192 bytes debería ser un límite.
Ahora probé también el tamaño del archivo, probado con "echo off", miles de líneas de ajuste, después de ese "eco final", y funcionó para un archivo de 11 MB (aunque tardó unos segundos en terminar :) - no límite a la vista aquí.
También trabajaron 110 MB. ¿Es suficiente? ;)
agradable. gracias por probar esto para mí :-) 8k suena mucho, así que espero que esto sea suficiente. De lo contrario, tal vez podría dividir líneas con este pequeño sombrero ^? – zedoo
No, solo probado, también. 8K parece ser un límite difícil, incluso con división. – schnaader
También tenga en cuenta que esto es para las líneas finales (con las variables reemplazadas), por lo que echo% a %% a% fallará si% a% es una cadena de más de 4K! – schnaader
Algunas ideas, no necesariamente se excluyen mutuamente:
- Cambiar a PowerShell.
- Cambie a una aplicación basada en datos, para que todo el material variable se guarde en un archivo de datos (CSV, texto, lo que sea), y como resultado puede tener una secuencia de comandos pequeña y repetitiva que abre el archivo de datos y opera .
Debe funcionar al menos hasta 2 GB. Las líneas se leen directamente desde el archivo BAT en el disco (no hay almacenamiento en caché involucrado). Hago esta declaración debido a lo siguiente:
¡De hecho, puede editar un archivo BAT mientras se está ejecutando! Y funcionará a pesar de que un editor de texto puede cambiar el nombre de la versión original y guardar la nueva versión en una nueva ubicación en el disco . Siempre que tenga cuidado de no insertar texto arriba del el comando que se está ejecutando actualmente. Las líneas pueden ser cambiadas/insertadas/eliminadas debajo del comando actualmente en ejecución y las nuevas líneas serán las que se ejecutarán. Tengo a menudo hecho esto con archivos BAT que contienen una larga lista de comandos wget, cada uno de los cuales toma decenas de minutos en ejecutarse.
De acuerdo con Microsoft, no hay límite para un tamaño de archivo por lotes. Sin embargo, una línea de archivo por lotes no debe exceder los 127 bytes o se truncará en la ejecución.
Ver Maximum Line Length and Count for Batch Files & CONFIG.SYS
Una sola línea no debe superar los 8192 caracteres, incluso después de la expansión de %var%
o !var!
expresiones, más tienes un error.
No hay límite (conocido) para el archivo en sí.
La longitud máxima de cualquier línea de comando (o variable) dentro de CMD es 8191 characters.
- 1. Actualización de archivos por lotes de DOS para Windows
- 2. archivo por lotes de Windows para eliminar archivos y carpetas .svn
- 3. Script de archivo por lotes para eliminar caracteres especiales de nombres de archivos (Windows)
- 4. archivo por lotes de Windows operador &&
- 5. ¿Arrastrar y soltar el archivo por lotes para varios archivos?
- 6. Windows Archivo por lotes para hacer eco de un número de línea específico
- 7. ¿Cómo puedo comprobar el tamaño de un archivo en un archivo por lotes de Windows?
- 8. Scripts Scala en archivos por lotes de Windows
- 9. ¿Cómo concatenar cadenas en un archivo por lotes de Windows?
- 10. Escapar símbolos en archivos por lotes de Windows
- 11. Escribiendo un archivo por lotes para eliminar archivos con comodines
- 12. texto Abrir archivo y programa de acceso directo en el archivo por lotes de Windows
- 13. Redirigir argumentos pasados a un archivo por lotes de Windows
- 14. Control de psftp en un archivo por lotes de Windows
- 15. Archivo por lotes de subarchivo de llamadas por lotes para pasar n parámetros y regresar sin usar el archivo
- 16. Archivo por lotes que devuelve el tamaño de la carpeta
- 17. Codificación de archivo por lotes
- 18. Archivo de proceso por lotes de Windows - Concatene todos los archivos en los subdirectorios
- 19. Archivo por lotes para reiniciar un servicio. Windows
- 20. Ejecute el archivo por lotes como un servicio de Windows
- 21. Script por lotes de Windows para mostrar archivos ocultos por virus
- 22. Invocar el archivo por lotes de Windows desde Linux
- 23. Incrustar VBScript dentro del archivo por lotes de Windows
- 24. Incluir un archivo por lotes en un archivo por lotes
- 25. archivos por lotes, Vista x64, si y el paréntesis
- 26. Archivo por lotes de Windows: ¿PID del último proceso?
- 27. Temporizador en el archivo por lotes de Windows
- 28. varios comandos en una sola línea en un archivo por lotes de Windows
- 29. ¿Cómo eliminar los archivos N de tipo X de las subcarpetas Y de un archivo por lotes de Windows?
- 30. Windows script por lotes: cálculo de subcadena
Sin entrar en lo que exactamente está planeando escribir en ese archivo por lotes, me parece que si necesita escribir unos pocos megabytes, está haciendo algo mal. Los megabytes de lote no me parecen un buen diseño. –
tienes razón. es una solución rápida y sucia, pero es la forma más rápida de hacerlo. – zedoo