file - read - echo date windows
Batch files: ¿Cómo leer un archivo? (7)
Bueno, hay muchas maneras diferentes, pero si solo quiere MOSTRAR el texto y NO GUARDARLO en ninguna parte, simplemente usa: findstr /v "randomtextthatnoonewilluse" filename.txt
¿Cómo se puede leer un archivo (texto o binario) de un archivo por lotes? Hay una forma de leerlo en modo binario o modo de texto?
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 funciona solo de manera confiable, si la expansión demorada está desactivada.
La detección de CR / LF versus LF simple parece también 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 lo tanto casi imposible.
El problema con las líneas vacías se puede resolver con un truco. Prefija cada línea con un número de línea, utilizando el comando findstr, y después de leer, elimine el prefijo.
@echo off
SETLOCAL DisableDelayedExpansion
FOR /F "usebackq delims=" %%a in (`"findstr /n ^^ t.txt"`) do (
set "var=%%a"
SETLOCAL EnableDelayedExpansion
set "var=!var:*:=!"
echo(!var!
ENDLOCAL
)
¡Alternar entre la expansión retardada activada y desactivada es necesaria para el trabajo seguro con cadenas, como !
o ^^^xy!z
.
Esto se debe a que la línea set "var=%%a"
solo es segura con DisabledDelayedExpansion , de lo contrario, los signos de admiración se eliminan y los caret se usan como caracteres de escape (secundarios) y también se eliminan.
Pero usar la var
variable solo es seguro con EnabledDelayedExpansion , ya que incluso una call %%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 en el extremo de la línea.
Pero la ventaja es que no necesitó el alternar con retraso y es más fácil almacenar valores en variables
@echo off
setlocal EnableDelayedExpansion
set "file=%~1"
for /f "delims=" %%n in (''find /c /v "" %file%'') do set "len=%%n"
set "len=!len:*: =!"
<%file% (
for /l %%l in (1 1 !len!) do (
set "line="
set /p "line="
echo(!line!
)
)
Para leerlo "binario" en una representación hexagonal
Puedes ver SO: convertir un archivo binario a una representación HEX usando un archivo por lotes
En cmd.exe de estilo NT, puede recorrer las líneas de un archivo de texto con
FOR /F %i IN (file.txt) DO @echo %i
Escriba "ayuda para" en el símbolo del sistema para obtener más información. (No sé si funciona en cualquier "DOS" que esté usando)
Puede usar el comando for:
FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k
Tipo
for /?
en el símbolo del sistema. ¡Además, puedes analizar archivos ini !
Una manera muy fácil de hacerlo es usar el siguiente comando:
set /p mytextfile=< %pathtotextfile%/textfile.txt
echo %mytextfile%
Esto solo mostrará la primera línea de texto en un archivo de texto. La otra forma en que puede hacerlo es usar el siguiente comando:
type %pathtotextfile%/textfile.txt
Esto pondrá todos los datos en el archivo de texto en la pantalla. ¡Espero que esto ayude!
Utilizar:
set /p var=< file.ext
Es la forma más simple de hacerlo funciona en la mayoría de las versiones de lote.
si solo desea mostrarlo en cmd, puede usar esto:
cat myfile.txt