Batch-Satti
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Batch-Satti

Você não está conectado. Conecte-se ou registre-se

Dúvida usar linhas de um .txt como valor para variável

+3
leandrotsampa
Boss-Head
coco
7 participantes

Ir para baixo  Mensagem [Página 1 de 1]

coco



Boas galera.
Gostaria de saber como usar um arquivo de txt sendo cada uma de sua linha se torna-se um valor para uma variável.

exemplo
variavel nome seria preenchida com a lista de nomes do arquivo txt.

@echo off
set nome=""
Digite o seu nome:
set /p nome=
echo.
echo Ola %nome% !!

obrigado

Boss-Head

Boss-Head

Não sei se é isso que vc precisa más se vc não digitar nada a variavel nome assume outro valor
Código:
@echo off
echo Digite o seu nome:
set /p nome=
if "%nome%"=="" set nome=Boss-Head
echo.
echo Ola %nome% !!
Pause >nul


outro exemplo é se vc criar um arquivo teste.txt e colocar o nome nele depois executa o batch e a variavel assume sempre a primeira linha do teste.txt

Código:
@echo off
echo Digite o seu nome:
set /p nome=<teste.txt
echo.
echo Ola %nome% !!
Pause >nul
:::::::::::::::::::::teste.txt:::::::::::
Boss-head
cocada
bolacha
::::::::::::::::::::::::::::::::::::::::::

Pssn gosta desta mensagem

leandrotsampa



Boa tarde, e como eu poderia fazer pra ele passar para a próxima linha???

Tipo ele pega o nome da primeira linha ai faz o que tem q fazer ai depois ele volta so que ai ele pega a segunda linha e assim sucessivamente.

coco



Iria fazer a mesma pergunta ? o que eu quero fazer é o seu segundo exemplo Boss-Head...o que significa o comando nul.

coco



tentei a sua segunda opção não funcionou.
diz que o sistema não pode encontrar o arquivo especificado , sendo que criei o texto.txt na mesma pasta. vou tentar colocar o caminho por completo.

PS: erro de digitação.

Boss-Head

Boss-Head

é teste.txt
e não texto.txt
não sei se é isso ?

Nul é um arquivo nulo que na verdade é uma variável de sistema e que existe em quase todas as linguagens !
no caso de ">nul"
eu estou enviando a saida de erro que seria mostrada "pressione uma tecla"na tela para a variavel nul porque você não consegue criar um arquivo em lugar nenhum com esse nome (teste assim crie um arquivo qualquer sem extensão com o nome nul, pode ser pasta se quiser e veja o que acontece)!
se vc não quisesse ver a saida de erro no batch poderia fazer isso
<FONT color=red>@echo off
echo Digite o seu nome:
set /p nome=

coco



mais tem como fazer para ele pegar o valor da segunda linha e assim sucessivamente?
valeu pela ajuda

OneKDash

OneKDash

Através do comando for /F da pra pegar linha por linha amigo. Use os parametros do /F para melhorar a execucao.

http://www.d3f4ult.com

leandrotsampa



Ficaria como no caso???

Denison

Denison

Ola Srs.

coco, ha possibilidade de pegar n linhas que tiver o arquivo de texto.

Obs.: pode haver problemas na execução, como linhas em branco entre outras coisas.

Com base na sua pergunta montei um script utilizando informações do fórum. Talvez possa ajudar.

Importante!
Dá uma olhada no tutorial, voce pode encontrar o que está procurando:
[Tens de ter uma conta e sessão iniciada para poderes visualizar este link]

*atenção quando vc for especificar o nome do arquivo de texto, deixei como texto.txt

Segue:

Código:
@ECHO OFF
::conta a quantidade de linhas
type texto.txt | find /v /c "" < texto.txt>nlinhas
set/p n=<nlinhas
@ECHO QUANTIDADE DE LINHAS: %n%
DEL nlinhas
@ECHO.
@ECHO SERAO CRIADAS %n% VARIAVEIS.
type texto.txt>bkp.txt

SET/A J=1

::ATRIBUI VALOR NA VARIAVEL
:INI
SET/P K%J%=<TEXTO.TXT
SET/P K=<TEXTO.TXT
(
@ECHO 1d
@ECHO E
) | EDLIN /B texto.txt>NUL 2>&1
del texto.bak
@ECHO.
@ECHO MOSTRANDO A %J%a VARIAVEL:
@ECHO %K%
@ECHO.

IF "%J%" EQU "%n%" (del texto.txt&ren bkp.txt texto.txt&@ECHO.&@ECHO AS %n% VARIAVEIS JA FORAM CRIADAS!&PAUSE>NUL&exit) ELSE SET/A J=%J%+1&GOTO INI

Até mais.

Pssn gosta desta mensagem

leandrotsampa



coco escreveu:Boas galera.
Gostaria de saber como usar um arquivo de txt sendo cada uma de sua linha se torna-se um valor para uma variável.

exemplo
variavel nome seria preenchida com a lista de nomes do arquivo txt.

@echo off
set nome=""
Digite o seu nome:
set /p nome=
echo.
echo Ola %nome% !!

obrigado

Boa tarde, eu descobri uma maneira ficando mais ou menos assim:

nome.txt > arquivo contendo os nomes

Código:
@echo off
setlocal enabledelayedexpansion
set c=0
set /p nome=<nome.txt
echo Ola %nome% !!

rem Deleta a primeira linha, colocando o que era a segunda como variavel.
for /f "tokens=*" %%a in (nome.txt) do (
set /a c+=1
if [!c!] NEQ [1] echo %%a>>nome1.txt
del nome.txt
ren nome1.txt nome.txt
echo Ola pra vc tbm %nome% !!
)
endlocal

pause

Coloque o seguinte no arquivo nome.txt
Código:
Leandro
Carol
[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]

coco



to vendo os exemplos que passaram se alguem tiver outras soluções pode postar serão bem vindas e valeu pela contribuição do pessoal.

R4TH4CK3R

R4TH4CK3R

Código:

FOR /F "USEBACKQ SKIP=(linhas a saltar, ou use o set/a para a variavel pretendida) TOKENS=1 DELIMS= " %%A IN ("(ficheiro)") DO SET (variavel)=%%A

https://github.com/HAWGT

Boss-Head

Boss-Head

Veja um exemplo que postei em um outro forum [Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem] Sad)
o que ele faz lê a primeira linha executa o comando / retorna pra proxima linha executa easim.......


Código:
@echo off
if not exist lista.txt call :lista
for /f "tokens=*" %%x in ('type lista.txt') do (call :seguinte "%%x")

:seguinte
color 0f
cls

set ip=%~1
IF "%ip:~0,1%"=="X" goto fim
set ip=%ip:http://=%
set ip=%ip:/=%
set ip=%ip: =%
set ip=%ip:-= %
set ip=%ip:X=%
set ip=%ip:x=%
echo.
echo. Carregando ip %ip%
echo.
set "bar="
set "percent=0"
set "count=0"
for /l %%i in (1,1,10) do set "bar=!bar!±"
:loop
set /p "= %bar:~0,10% %percent%%%"
ping -n 1 -w 1 localhost>nul
for /l %%i in (1,1,16) do set /p "="
set "bar=Û%bar%"
set /a "count+=1"
set /a "percent+=2"
if %count% leq 10 goto:loop
echo.
echo.
echo.
echo  Tentando acesso ao ip
echo.
PING -n 1 %ip% >nul
if %ERRORLEVEL%==1 (
set /a inati+=1
color 0C
cls
echo. --------------------------------------------------------
echo.
echo %ip% Inativo ou fora da rede
echo.
echo. --------------------------------------------------------
Ping -n 2 0.0.0.0>nul 2>&1
)
if %ERRORLEVEL%==0 (
set /a ati+=1
color 0B
cls
echo. --------------------------------------------------------
echo.
echo IP - %ip% esta conectada
echo.
echo. --------------------------------------------------------
Ping -n 2 0.0.0.0>nul 2>&1
)
goto:eof

:fim
msg * "Processo de leitura concluido"
msg * "Total de IPS inativos ou fora da rede - %inati%"
msg * "Total de IPS ativos e cadastradas - %ati%"
exit


:lista
(
Echo 192.168.160.241
Echo 192.168.195.22
Echo 172.16.36.240
Echo 192.168.205.249
Echo 192.168.205.250
Echo 172.24.3.61
Echo 172.24.1.60
Echo 172.24.2.162
Echo 172.24.2.123
Echo X
)>lista.txt
goto:eof



Última edição por Boss-Head em Qua Mar 03, 2010 2:57 pm, editado 1 vez(es)

Pssn gosta desta mensagem

Boss-Head

Boss-Head

detalhe o x na frente do ip é só pra dizer que a lista chegou no fim

leandrotsampa



Oh então esse batch que vc passoa eu precisei ficar dando ENTER pra poder avançar a porcentagem...
E isso msm???

mfernandop



Gostaria de saber se consigo montar uma linha de comando pegando um valor de 2 arquivos tipo assim:

ping %a% | grep nslookup %b%

tipo o valor %a% pega da linha do arquivo1.txt e o %b% pega do arquivo2.txt

Conteúdo patrocinado



Ir para o topo  Mensagem [Página 1 de 1]

Permissões neste sub-fórum
Não podes responder a tópicos