¿Cómo se puede leer un archivo (texto o binario) de un archivo por lotes? ¿Hay alguna forma de leerlo en modo binario o en modo texto?
file
batch-file
Lucas Gabriel Sánchez
fuente
fuente
TYPE [fileName]
para MS-Dos.Respuestas:
Puede usar el comando for:
Tipo
en el símbolo del sistema. Además, puede analizar archivos ini .
fuente
for /?
el comando , analizaría cada línea en myfile.txt, ignorando las líneas que comienzan con un punto y coma, pasando el segundo y tercer token de cada línea al cuerpo de for, con tokens delimitados por comas y / o espacios.En cmd.exe estilo NT, puede recorrer las líneas de un archivo de texto con
Escriba "ayuda para" en el símbolo del sistema para obtener más información. (no sé si eso funciona en cualquier "DOS" que esté usando)
fuente
%%i
.El FOR-LOOP generalmente funciona, pero hay algunos problemas. El FOR no acepta líneas vacías y las líneas con más de ~ 8190 son problemáticas. La expansión solo funciona de manera confiable, si la expansión retardada está desactivada.
La detección de CR / LF frente a LF simple también parece un poco complicada.
También los caracteres NUL son problemáticos, ya que FOR-Loop cancela inmediatamente la lectura.
La lectura binaria directa parece, por tanto, casi imposible.
El problema de las líneas vacías se puede solucionar con un truco. Prefije cada línea con un número de línea, usando el comando findtr, y después de leer, elimine el prefijo.
Alternar entre la expansión retardada habilitada y deshabilitada es necesario para el trabajo seguro con cadenas, como
!
o^^^xy!z
.Eso es porque la línea
set "var=%%a"
solo es segura con DisabledDelayedExpansion ; de lo contrario, los signos de exclamación se eliminan y los signos de intercalación se usan como caracteres de escape (secundarios) y también se eliminan.Pero usar la variable
var
solo es seguro con EnabledDelayedExpansion , ya que incluso acall %%var%%
fallará con contenido como"&"&
.EDITAR: Variante set / p agregada
Hay una segunda forma de leer un archivo con
set /p
, las únicas desventajas son que está limitado a ~ 1024 caracteres por línea y elimina los caracteres de control al final de la línea.Pero la ventaja es que no necesita el cambio retrasado y es más fácil almacenar valores en variables
Para leerlo "binario" en una representación hexadecimal,
podría mirar SO: convertir un archivo binario en una representación HEX usando un archivo por lotes
fuente
set /p
. Solíaset /p value=< result.txt
obtener la primera línea de un archivo de texto0x1A
? ¿Sefor /F
comporta de la misma manera que con los caracteres NUL (0x00
)?:
o;
o contienen!
Una forma muy sencilla de hacerlo es utilizar el siguiente comando:
Esto solo mostrará la primera línea de texto en un archivo de texto. La otra forma de hacerlo es usar el siguiente comando:
Esto pondrá todos los datos del archivo de texto en la pantalla. ¡Espero que esto ayude!
fuente
Bueno, hay muchas formas diferentes, pero si solo desea MOSTRAR el texto y no GUARDARLO en ningún lugar, simplemente use:
findstr /v "randomtextthatnoonewilluse" filename.txt
fuente
Código corregido:
fuente
eol=
ydelims=
son superfluos,set line=%%a
deben usar comillas y sin alternar el modo de expansión retardada, el código no puede leer signos de exclamaciónUn código que muestra el contenido del archivo myfile.txt en la pantalla
set% filecontent% = 0
tipo% filename% >>% filecontent%
echo% filecontent%
fuente