domingo, 18 de setembro de 2016

Caracteres especiais

E  aí pessoal. Quando vocês vão fazer um batch script, já devem ter notado que a maioria dos caracteres especias como, por exemplo, os acentos não são imprimidos no cmd.exe da mesma forma que foi digitado em lotes. Isso acontece por causa que os caracteres do cmd.exe(software criado para ser semelhante ao antigo sistema operacional MS-DOS), não são interpretados da mesma maneira que no ambiente do sistema operacional do Windows. Mas isso é normal, cada coisa funciona de um jeito e na maioria das vezes é possível fazer uma conexão entre duas coisas totalmente distintas. Veja abaixo alguns exemplos de caracteres que são imprimidos de maneira diferente no cmd.exe e em arquivos em lotes:

No cmd.exe
Em arquivos em lotes
é
á

í
¡
ú
£
ã
Æ
õ
ä
Á
µ
Ã
Ç
Ó
à
Ú
é














Note que o caractere "í" imprimido no cmd.exe é impresso assim " ": um espaço vazio, mas não é a mesma coisa que apertar a tecla espaço, é impresso como espaço, mas não é o espaço. É a mesma coisa daquela vírgula na segunda coluna da primeira linha, não é por que a impressão é de uma vírgula que o símbolo é uma vírgula, ou seja, se você digitar "," pelo teclado não irá aparecer o símbolo "é" no cmd.exe. Mas se você digitar "é" no cmd.exe e fazer com que este caractere seja redirecionado para o bloco de notas, dá para pegar este caractere no bloco de notas copiando e colando em um arquivo de notas. Pensando nisso, eu criei um batch script que faz uma conversão de cmd.exe para arquivo em lotes, baixe na minha pasta compartilhada do Google Drive ou siga os passos do meu tutorial:

1) Abra o bloco de notas e cole este batch script:

@echo off
title Caracteres especiais
cd database
color 0a
mode 57,35
:MENU
title Caracteres especiais\Menu
cls
echo.
type menu.txt
echo.
echo 1.Registrar caractere
echo 2.Ver caractere
echo 3.Remover caractere
echo 4.Sair
echo.
set esc=0
set /p esc=Escolher:
echo.
if %esc% equ 0 goto MENU
if %esc% equ 1 goto REGISTRAR
if %esc% equ 2 goto VER
if %esc% equ 3 goto REMOVER
if %esc% equ 4 goto SAIR
goto MENU

:SAIR
title Caracteres especiais\Menu\Sair
cls
echo.
set sair=0
set /p sair=Vocˆ tem certeza que deseja sair?(s/n):
if %sair% equ 0 goto SAIR
if %sair% equ S exit -s
if %sair% equ s exit -s
if %sair% equ N goto MENU
if %sair% equ n goto MENU
echo.
echo Comando inv lido! Digite a tecla "S" ou a tecla "s" para "Sim" e a tecla "N" ou a tecla "n" para "NÆo".
pause>nul
goto SAIR

:REGISTRAR
title Caracteres especiais\Menu\Registrar
cls
if not exist voltar.txt cd ..
echo.
type voltar.txt
echo.
echo.
echo Que tipo de caractere vocˆ deseja registrar?
echo.
echo 1.Caractere min£sculo
echo 2.Caractere mai£sculo
echo 3.Caractere indiferente
echo.
set esc=0
set /p esc=Escolher:
if %esc% equ 0 goto REGISTRAR
if %esc% equ 1 cd caracteres_minusculos&&set caractere=caracteres_minusculos&&goto REGISTRAR2
if %esc% equ 2 cd caracteres_maiusculos&&set caractere=caracteres_maiusculos&&goto REGISTRAR2
if %esc% equ 3 cd caracteres_indiferentes&&set caractere=caracteres_indiferentes&&goto REGISTRAR2
if %esc% equ VOLTAR goto MENU
if %esc% equ voltar goto MENU
goto REGISTRAR

:REGISTRAR2
title Caracteres especiais\Menu\Registrar\%caractere%
cls
if not exist voltar.txt cd ..
if %caractere% equ caracteres_indiferentes (
echo.
echo  [ascii]:Ver Tabela ASCII
)
echo.
type voltar.txt
echo.
echo.
cd %caractere%
set reg=t
if %caractere% equ caracteres_indiferentes (
set /p reg=Registrar caractere^(use a tabela ASCII^):
)
if not %caractere% equ caracteres_indiferentes (
set /p reg=Registrar caractere:
)
if %reg% equ t goto REGISTRAR2
if %reg% equ ascii cd ..&&start Tabela_ASCII.txt&&goto REGISTRAR2
if %reg% equ ASCII cd ..&&start Tabela_ASCII.txt&&goto REGISTRAR2
if %reg% equ VOLTAR goto REGISTRAR
if %reg% equ voltar goto REGISTRAR
if exist %reg% (
echo.
echo J  existe este caractere! Vocˆ pode ver o print deste
echo caractere digitando ele em "Ver caractere". Para fazer
echo isso ‚ simples: volte para o menu, digite a tecla "2" e
echo pressione a tecla ENTER.
pause>nul
goto REGISTRAR2
)
echo %reg%>%reg%
goto REGISTRAR2

:VER
title Caracteres especiais\Menu\Ver
cls
if not exist voltar.txt cd ..
echo.
type voltar.txt
echo.
echo.
echo Que tipo de caractere vocˆ deseja ver?
echo.
echo 1.Caractere min£sculo
echo 2.Caractere mai£sculo
echo 3.Caractere indiferente
echo.
set esc=0
set /p esc=Escolher:
if %esc% equ 0 goto VER
if %esc% equ 1 cd caracteres_minusculos&&set caractere=caracteres_minusculos&&set caractere2=min£sculos&&goto VER2
if %esc% equ 2 cd caracteres_maiusculos&&set caractere=caracteres_maiusculos&&set caractere2=mai£sculos&&goto VER2
if %esc% equ 3 cd caracteres_indiferentes&&set caractere=caracteres_indiferentes&&set caractere2=indiferentes&&goto VER2
if %esc% equ VOLTAR goto MENU
if %esc% equ voltar goto MENU
goto VER

:VER2
title Caracteres especiais\Menu\Ver\%caractere%
if exist voltar.txt cd %caractere%
cls
echo.
echo Lista de caracteres %caractere2%:
echo.
echo -------------------------------------------------------
dir /B
echo -------------------------------------------------------
if not exist voltar.txt cd ..
if %caractere% equ caracteres_indiferentes (
echo.
echo  [ascii]:Ver Tabela ASCII
)
echo.
type voltar.txt
echo.
echo.
cd %caractere%
set ver=0
if %caractere% equ caracteres_indiferentes (
set /p ver=Ver caractere^(use a tabela ASCII^):
)
if not %caractere% equ caracteres_indiferentes (
set /p ver=Ver caractere:
)
if %ver% equ 0 goto VER2
if %ver% equ ascii cd ..&&start Tabela_ASCII.txt&&goto VER2
if %ver% equ ASCII cd ..&&start Tabela_ASCII.txt&&goto VER2
if %ver% equ VOLTAR goto VER
if %ver% equ voltar goto VER
if not exist %ver% (
echo.
echo Este caractere ainda nÆo foi registrado, volte ao menu e
echo digite "1" para escolher a op‡Æo "Registrar caractere".
pause>nul
goto VER2
)
ren %ver% %ver%.txt
start %ver%.txt
pause>nul
ren %ver%.txt %ver%
goto VER2

:REMOVER
title Caracteres especiais\Menu\Remover
cls
if not exist voltar.txt cd ..
echo.
type voltar.txt
echo.
echo.
echo Que tipo de caractere vocˆ deseja remover?
echo.
echo 1.Caractere min£sculo
echo 2.Caractere mai£sculo
echo 3.Caractere indiferente
echo.
set esc=0
set /p esc=Escolher:
if %esc% equ 0 goto REMOVER
if %esc% equ 1 cd caracteres_minusculos&&set caractere=caracteres_minusculos&&set caractere2=min£sculos&&goto REMOVER2
if %esc% equ 2 cd caracteres_maiusculos&&set caractere=caracteres_maiusculos&&set caractere2=mai£sculos&&goto REMOVER2
if %esc% equ 3 cd caracteres_indiferentes&&set caractere=caracteres_indiferentes&&set caractere2=indiferentes&&goto REMOVER2
if %esc% equ VOLTAR goto MENU
if %esc% equ voltar goto MENU
goto REMOVER

:REMOVER2
title Caracteres especiais\Menu\Remover\%caractere%
if exist voltar.txt cd %caractere%
cls
echo.
echo Lista de caracteres %caractere2%:
echo.
echo -------------------------------------------------------
dir /B
echo -------------------------------------------------------
if not exist voltar.txt cd ..
if %caractere% equ caracteres_indiferentes (
echo.
echo  [ascii]:Ver Tabela ASCII
)
echo.
type voltar.txt
echo.
echo.
cd %caractere%
set remover=0
if %caractere% equ caracteres_indiferentes (
set /p remover=Remover caractere^(use a tabela ASCII^):
)
if not %caractere% equ caracteres_indiferentes (
set /p remover=Remover caractere:
)
if %remover% equ VOLTAR goto REMOVER
if %remover% equ voltar goto REMOVER
if %remover% equ ascii cd ..&&start Tabela_ASCII.txt&&goto REMOVER2
if %remover% equ ASCII cd ..&&start Tabela_ASCII.txt&&goto REMOVER2
if %remover% equ 0 goto REMOVER2
if not exist %remover% (
echo.
echo Caractere inexistente! Digite um caractere que esteja na
echo lista de caracteres.
pause>nul
goto REMOVER2
)

:REMOVER2_conf
set conf=0
echo.
set /p conf=Vocˆ tem certeza que deseja remover este caractere?(s/n):
if %conf% equ 0 goto REMOVER2_conf
if %conf% equ S del %remover%&&goto REMOVER2
if %conf% equ s del %remover%&&goto REMOVER2
if %conf% equ N goto REMOVER2
if %conf% equ n goto REMOVER2
goto REMOVER2

2) Salve como "Caracteres especiais.bat".

sábado, 28 de novembro de 2015

Histórico de execução de um arquivo em lotes

E aí pessoas, sejam todos super bem-vindos ao meu tutorial! E desta vez vou ensinar  a fazer um "Histórico de execução de um arquivo em lotes". Então, vamos para o tutorial:

Primeiro método:

1) Abra o bloco de notas.

2) Cole este batch script:


@echo off
color fc
title Historico de execucao
setlocal enabledelayedexpansion
:main
set user=Annonymous
set /p user=Nome de usuario:
set data=%DATE%
set hora=%TIME%
echo Nome de usuario:%user%    Data:%data%    Hora:%hora%>>historico.txt

3) Salve o arquivo como Histórico de execução.bat (o que está em negrito pode ser substituído pelo o que quiser).







Segundo método:

Baixe a pasta "Histórico de execução" na  minha pasta compartilhada do Google Drive(clique no link à esquerda).

Funcionamento:
Digitei a string (linha de comando) "@echo off" para desativar o eco; digitei a string "color fc" para deixar a cor do plano branca e a cor da fonte vermelha; digitei a string "title" para dar o título de Historico de execucao; digitei a string "setlocal enabledelayedexpansion" para ativar as extensões de comando; digitei a string ":main" para fazer um rótudo chamado "main"(principal); digitei a string "set user=Annonymous" para dar o valor de "Annonymous" para o conjunto "user", pois, se o conjunto user não for definido pelo usuário, o nome de usuário será "Annonymous"; digitei a string "set /p user=Nome de usuario:" para o usuário poder definir a variável user; digitei as strings "set data=%DATE%" e "set hora=%TIME%" para o sistema definir o valor dos conjuntos "data" e "hora" usando a data e a hora atual; digitei a string "echo Nome de usuario:%user%     Data:%data%    Hora:%hora%>>historico.txt" para o sistema criar um arquivo chamado "histórico.txt" ou, se já existir, adicionar uma linha no arquivo "histórico.txt" contendo o valor dos conjuntos "usuario", "data" e "hora".

É um script muito simples, mas é muito interessante! Espero que tenham gostado. Deixem seus comentários.

Prêmio de 1º lugar da eletiva "A Net & Eu"

E aí galera! Graças a vocês eu e meu colega, Victor, ganhamos o prêmio de 1º lugar na eletiva "A Net & Eu" da nossa escola. Muito obrigado e continuem visitando nosso blog.



sexta-feira, 20 de novembro de 2015

Fazer batch script para desligar o computador

Faça um batch script que desligue o computador após uma hora e que deixe um comentário. Mande o script nos comentários para mim avaliar. Dica: use o comando "shutdown".

Beeps

E aí pessoal, fiz um novo batch script  e ficou muito legal! Então vamos para o tutorial:

Primeiro método:


1)Abra o bloco de notas ou outro editor de texto(recomendo o bloco de notas, não funciona no Word ou outros editores de texto complexos, apenas editores simples).


2)Cole o batch script abaixo:

@echo off
color 3a
title Beeps
mode 63,30
set veloc=2
set /p opc_veloc=Deseja ativar opcao de velocidade(s/n):
if %opc_veloc% equ n set veloc=off
if not %opc_veloc% equ n set veloc=on
:main
cls
echo.
echo Bem-vindo ao "Beeps"! Quantos beeps vc deseja?
echo.
set /p num=Quantidade:
set /a num=%num%+1
if not %veloc% equ off (
echo.
echo E em que velocidade? ^(Para desativar esta opcao, digite "off"^).
set /p veloc=Velocidade:
)
if %veloc%==off set veloc=2
if %num% leq 1 (
echo.
echo Numero invalido!
echo.
pause>nul
)
if not %num% leq 0 goto loop_time
goto main

:loop_time
if %num% gtr 1 (
set /a num=%num%-1
goto loop
)
if %num% equ 1 goto main

:loop
echo.
echo %num%
ping localhost -n %veloc% >nul
echo
goto loop_time

3)Baixe esse arquivo em lotes(clique no link à esquerda, é um caractere não imprimível em editores de texto, apenas o bloco de notas o aceita), clique em editar, copie e cole na penúltima linha depois de "echo ". 





4)Salve o arquivo como Beeps.bat, onde "Beeps" pode ser substituido pelo o que quiser e ".bat" é  a extensão de arquivos em lotes(não esqueça de escrever ".bat").








5)Execute o arquivo.

Segundo método:


1)Baixe o arquivo "Beeps.bat" na minha  pasta compartilhada do Google Drive(clique no link a esquerda).


2)Execute o arquivo, se mostrar uma mensagem de segurança perguntando se deseja executar, é por que foi baixado da internet, pode desativar a caixa "Sempre perguntar antes de abrir este arquivo" e executar que este arquivo é seguro!



Funcionamento:

Antes de continuar lendo, tente intender o funcionamento do script; intendeu? Então vamos para a explicação:


Desativei o eco com o comando "@echo off"; usei comando "color" para definir as cores usando dois dígitos hexadecimais(3a), deixando assim, a cor do plano de fundo verde-água e cor da fonte verde-claro; usei o comando "title" para dar título ao script de "Beeps"; usei o comando "mode" para definir as dimensões da tela(61,30);  usei o comando "set" para definir o valor das variáveis; usei o comando "if" para estabelecer as condições(ex: se o valor da variável não for igual a 0, subtrair 1); usei um caractere especial que serve para o cmd.exe fazer aquele "beep"; usei o comando "echo" para exibir textos e "echo." para pular linhas; usei o comando "ping localhost" para definir a velocidade de processamento através de variáveis definidas por uma linha de entrada digitada pelo usuário.

Intenderam tudo? Ficou muito legal né?! Fazer este script me fez intender a linguagem batch  mais aprofundadamente e recomendo que vocês também pratiquem! Comentem aí o que vocês acharam, se gostaram ou não gostaram, se intenderam ou não intenderam, se eu estou ensinando bem, etc.