¿Cómo puedo leer la primera línea de un archivo de texto usando un archivo por lotes de Windows? Dado que el archivo es grande, solo quiero ocuparme de la primera línea.
batch-file
cmd
Jesse Vogt
fuente
fuente
Respuestas:
Aquí hay un archivo por lotes de uso general para imprimir las
n
líneas superiores de un archivo como lahead
utilidad GNU , en lugar de una sola línea.Por ejemplo:
Actualmente no cuenta líneas en blanco. También está sujeto a la restricción de longitud de línea de archivo por lotes de 8 KB.
fuente
;
, el carácter predeterminado de FOR / F EOL. Si solicita 10 líneas, imprimirá las primeras 10 líneas que no están vacías y no comienzan con;
.uh? imo esto es mucho más simple
fuente
echo %texte:~3%
por ejemplo, omitirá los primeros tres caracteres. Eso es útil cuando está leyendo un archivo UTF-8 con BOM.Uh chicos ...
fuente
findstr "^1:"
y ganar la calidez y protección de las comillas dobles. O, si desprecia las citas como yo y quiere vivir peligrosamente, usefindstr /b 1:
findstr ^^1
.set /p
solución es mucho más eficiente para archivos grandes.Podrías probar esto:
editar O, digamos que tiene cuatro columnas de datos y desea desde la quinta fila hacia abajo, intente esto:
fuente
"delims="
para imprimir los nombres completos de las carpetas junto con los espacios.Gracias a thetalkingwalnut con los comandos por lotes de Windows de respuesta para leer la primera línea del archivo de texto, se me ocurrió la siguiente solución:
fuente
Construyendo ligeramente sobre las respuestas de otras personas. Ahora le permite especificar el archivo desde el que desea leer y la variable en la que desea que se coloque el resultado:
Esto significa que puede usar lo anterior así (asumiendo que lo llamó getline.bat)
fuente
Una línea, útil para la redirección estándar con ">":
fuente
Prueba esto
fuente
El problema con las
EXIT /B
soluciones, cuando es más realista dentro de un archivo por lotes como solo una parte, es el siguiente. No hay procesamiento posterior dentro de dicho archivo por lotes después delEXIT /B
. Por lo general, los lotes son mucho más que una sola tarea limitada.Para contrarrestar ese problema:
(Sin embargo, los llamados personajes venenosos seguirán siendo un problema).
Más sobre el tema de obtener una línea en particular con comandos por lotes:
[Agregado el 28 de agosto de 2012] También se puede tener:
fuente
Para Cicle un archivo (
file1.txt
,file1[1].txt
,file1[2].txt
, etc.):Y está funcionando.
fuente
set /p
pregunta mediante un mensaje; sin embargo, con la redirección de archivos<
, obtiene inmediatamente el contenido del archivo cuando se le solicita; y como la primera línea termina con un final de línea, en ese punto el indicador deja de leer y, por lo tanto, almacena solo la primera línea de la variable.Tenga en cuenta que los enfoques de archivos por lotes se limitarán al límite de línea para el procesador de comandos de DOS; consulte ¿Cuál es el límite de longitud de la línea de comando? .
Entonces, si intenta procesar un archivo que tiene líneas de más de 8192 caracteres, el script simplemente los omitirá ya que el valor no se puede retener.
fuente
De otra manera
fuente
Aquí hay una solución que usa
powershell
:(También puede leer fácilmente un rango de líneas con
powershell (Get-Content file.txt)[0..3]
)Si necesita establecer una variable dentro de un script por lotes como primera línea
file.txt
, puede usar:fuente
for /f "delims=" %a in (downing.txt) do echo %a & pause>nul
Imprime la primera línea, luego espera a que el usuario presione una tecla para imprimir la siguiente línea. Después de imprimir las líneas requeridas, presione Ctrl + C para detener.
@Ross Presser: este método solo imprime líneas, no antepone números de línea.
fuente