Como você pode ler um arquivo (texto ou binário) de um arquivo em lote? Existe uma maneira de lê-lo em modo binário ou modo de texto?
file
batch-file
Lucas Gabriel Sánchez
fonte
fonte
TYPE [fileName]
para MS-Dos.Respostas:
Você pode usar o comando for:
Tipo
no prompt de comando. Além disso, você pode analisar arquivos ini !
fonte
for /?
o comando analisaria cada linha em meuarquivo.txt, ignorando as linhas que começam com um ponto e vírgula, passando o segundo e o terceiro token de cada linha para o corpo do for, com os tokens delimitados por vírgulas e / ou espaços.No cmd.exe estilo NT, você pode percorrer as linhas de um arquivo de texto com
Digite "ajuda para" no prompt de comando para obter mais informações. (não sei se isso funciona em qualquer "DOS" que você está usando)
fonte
%%i
.O FOR-LOOP geralmente funciona, mas existem alguns problemas. O FOR não aceita linhas vazias e linhas com mais de ~ 8190 são problemáticas. A expansão funciona apenas de forma confiável, se a expansão atrasada estiver desabilitada.
A detecção de CR / LF versus LF único também parece um pouco complicada.
Além disso, os caracteres NUL são problemáticos, pois um FOR-Loop cancela imediatamente a leitura.
A leitura binária direta parece, portanto, quase impossível.
O problema com linhas vazias pode ser resolvido com um truque. Prefixe cada linha com um número de linha, usando o comando findstr e, após a leitura, remova o prefixo.
Alternar entre a expansão retardada habilitada e desabilitada é necessária para o trabalho seguro com strings, como
!
ou^^^xy!z
.Isso
set "var=%%a"
ocorre porque a linha só é segura com DisabledDelayedExpansion , caso contrário, os pontos de exclamação são removidos e os circunflexos são usados como caracteres de escape (secundários) e também são removidos.Mas usar a variável
var
só é seguro com EnabledDelayedExpansion , pois até mesmo umcall %%var%%
irá falhar com conteúdo como"&"&
.EDITAR: Variante set / p adicionada
Há uma segunda maneira de ler um arquivo com
set /p
, as únicas desvantagens são que ele é limitado a ~ 1024 caracteres por linha e remove caracteres de controle no final da linha.Mas a vantagem é que você não precisa da alternância atrasada e é mais fácil armazenar valores em variáveis
Para lê-lo "binário" em uma representação hexadecimal
Você pode olhar para o SO: convertendo um arquivo binário em representação HEX usando um arquivo em lote
fonte
set /p
. Eu costumavaset /p value=< result.txt
pegar a primeira linha de um arquivo de texto0x1A
? sefor /F
comporta da mesma maneira que com caracteres NUL (0x00
)?:
ou;
ou contenham!
Uma maneira muito fácil de fazer isso é usar o seguinte comando:
Isso exibirá apenas a primeira linha de texto em um arquivo de texto. A outra maneira de fazer isso é usar o seguinte comando:
Isso colocará todos os dados do arquivo de texto na tela. Espero que isto ajude!
fonte
Bem, há muitas maneiras diferentes, mas se você quiser apenas EXIBIR o texto e não ARMAZENÁ-LO em qualquer lugar, basta usar:
findstr /v "randomtextthatnoonewilluse" filename.txt
fonte
Código corrigido:
fonte
eol=
edelims=
são supérfluos,set line=%%a
devem usar aspas e sem alternar o modo de expansão atrasada, o código não pode ler pontos de exclamaçãoUm código que exibe o conteúdo do arquivo myfile.txt na tela
definir% filecontent% = 0
type% filename% >>% filecontent%
echo% filecontent%
fonte