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

(DUV) Selecionando string e usando em outro comando.

3 participantes

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

Karlopires



Boa tarde srs.
Gostaria de uma explicação sobre como selecionar string em uma resposta de comando. Já vi varios exemplos no forum mas não consegui aprender com os exemplos.
Exemplo: no comando 'date' é mostrado na tela:
"Data atual: qua 26/08/2009
Digite a nova data: (dd-mm-aa)"
Quero criar um codigo que usa os três dados do comando 'date' (dia, mês e ano) e a hora do comando 'time' pra fazer uma expressão numerica que gera codigos para um programa que eu uso.
A expressão é (dd+mm) * ano + hora = senha.
Desde já agradeço.

Boss-Head

Boss-Head

:: mostrar a hora exemplo 18:25:45
:: %time:~0,2% ou seja da esquerda pra diteita contando a partir do zero :~0
:: eu mostro duas casas ,2
:: supondo que eu queira mostrar o 25 seria assim Set h=%time:~3,2%
:: ou seja contando da esquerda pra direita 3 casas eu mostro 2 que é o 25
:: no caso da data é o mesmo principio

Código:
@echo off
Set h=%time:~0,2%
Set ano=%date:~6,4%
echo %h%
echo %ano%
set /a teste=%h%+%ano%
echo resultado = %teste%
pause

Karlopires



Ok Boss. Com essa explicação não tinha como não aprender. Já fiz o bat e tá funcionando legal.
Muito obrigado. cheers

Denison

Denison

Bom dia Srs,

Gostaria de fazer um comentário a respeito da necessidade de ter um gerador de códigos, pois tambem já tive a necessidade de ter códigos únicos para uma aplicação.
Então usei as mesmas informações para gerar esses códigos, no entanto vale fazer algumas ressalvas das dificuldades que enfrentei:

Quando vc faz operações matemáticas com DATA e HORA tome cuidado de que o zero do mês Ex.: (08 Agosto) pode causar alguns problemas na sua expressão, e vc vai obter o seguinte erro: Número inválido. As constantes numéricas são decimais (17), hexadecimais (0x11) ou octais (021).

Esse erro pode acontecer tambem com o Ano, dependendo da quantidade de dígitos que vc escolher Ex.: (09 representa 2009)
E tambem pode ocorrer erros na expressão com a Hora utilizada, dependendo da quantidade de dígitos escolhidos quando vc for somar a hora : Ex: 0:01:50 com (dd+mm) * ano.

*Obs: Cuidado para não gerar códigos iguais.

Enfim, é necessário analisar a sua situção, para poder criar um batch que atenda sua necessidade.

ESSE é um script que gera códigos únicos e que utilizei por algum tempo, se for útil para vc.

Segue:
Código:

@echo off
color a
:ini
set dd=%date:~0,1%
if "%date:~0,1%" EQU "0" (set dd=%date:~5,1%) else set dd=%date:~0,2%

set mm=%date:~3,1%

if "%date:~3,1%" EQU "0" (set mm=%date:~4,1%) else set mm=%date:~3,2%

set /a x=%dd%+%mm%

set aa=%date:~6,4%

set /a y=%x%*%aa%

set tempo=%time:~0,2%%time:~3,2%%time:~6,2%%time:~9,2%

echo senha = %y%%tempo%
echo %y%%tempo%>>Senhas.txt
pause>nul
goto ini

Karlopires



Blz Denilson, que mancada a minha. Me antecipei sem testar o script com os valores das variaveis colhidas nos comando "date" e "time".
O erro ocorreu mesmo, mas com sua ajuda fiz a correção do meu bat.
Muito obrigado Boss e Denilton.

o meu codigo foi simples mas resolveu:
Código:
@echo off
if "%date:~4,1" EQU "0" (set d=%date:~5,1%) else (set d=%date:~4,2%)
if "%date:~7,1%" EQU "0" (set m=%date:~8,1%) else (set m=%date:~7,2%)
set an=%date:~10,4%
if "%time:~0,1%" EQU "0" (set h=%time:~1,1%) else (set h=%time:~0,2%)
@echo off
set /a senha_super=((%d%+%m%)*%an%)+%h%
echo A senha eh %senha_super%!
pause

Boss-Head

Boss-Head

Somente pra mostrar os varios recursos que vc pode utilizar dá uma olhada nesse exemplo !
Obs funciona no XP, pois não testei no vista e tanto faz o formato da data do sistema operacional se for Ingles etc. Arrow [Tens de ter uma conta e sessão iniciada para poderes visualizar este link]

Karlopires



Muito bom Boss-Head, mas eu nadei nesse script.
Sem querer abusar, tem como me falar sobre o 'tokens', 'delins' e a parte,
('cscript //nologo %BH%') no for? Obrigado.

Boss-Head

Boss-Head

MODIFIQUEI O SCRIPT PRA VC ENTENDER !
Código:
@ECHO OFF
set BH=newdate.vbs
echo Newdate = (Date())>%BH%
echo Yyyy = DatePart("YYYY", Newdate)>>%BH%
echo  Mm = DatePart("M"  , Newdate)>>%BH%
echo  Dd = DatePart("D"  , Newdate)>>%BH%
echo  Wd = DatePart("WW"  , Newdate)>>%BH%
echo  Wn = DatePart("Y"  , Newdate)>>%BH%
echo  Ww = Datepart("W"  , Newdate)>>%BH%
:: YYYY=ANO Mm=MES Dd=DIA Wd=DIASEMANA Ww=SEMANAMES Wn=NUMDIASANO
echo Wscript.Echo Yyyy^&" "^&Mm^&" "^&Dd^&" "^&Wd^&" "^&Ww^&" "^&Wn>>%BH%
cscript //nologo %BH% >bb.txt

::::::::::::::::::::::::::::::
:: "TOKENS=1-6  DELIMS= "
:: 2009 8 27 35 5 239
:: 1    2 3  4  5 6
::::::::::::::::::::::::::::::
for /F "tokens=1-6 delims= " %%A in (bb.txt) do (
ECHO ANO = %%A
ECHO MES = %%B
ECHO DIA = %%C
ECHO SEMANA DO ANO = %%D
ECHO DIA DA SEMANA = %%E
ECHO DIA DO ANO = %%F
SET A=%%A
SET B=%%B
SET C=%%C
SET D=%%D
SET E=%%E
SET F=%%F
)
SET /A SENHA=%A%+%B%+%C%+%D%+%E%*%F%
ECHO.
ECHO.
ECHO.
ECHO A SENHA %SENHA%
PAUSE >NUL

Karlopires



Fala Boss-Head.
Muito bom Boss, agora consegui entender! Very Happy
Programação é isso, tem que ser capaz de associar elefante com rapadura, rsrs.
Ah, esse script roda no vista sim.

Aproveitando o poste, gostaria de expor minha humilde opinião.
Em alguns fóruns não só de programação, mas de TI em geral, vejo uma certa
falta de vontade em ajudar os iniciantes e até um clima meio pesado.
Aqui vi que a coisa é diferente. Senti segurança em perguntar, e gostei da maneira
como os colegas explicam; no nível certo pra quem quer realmente aprender
fazendo, e não pegar receita de bolo pronta pra usar.
Obrigado pela ajuda pessoal e prometo não falar tanto nos próximos
postes. Very Happy

Boss-Head

Boss-Head

Fica a vontade em perguntar !

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