Tudo sobre Tecnologia da Informação

Segredos do CMD

Como Navegar pelas Pastas

Para navegar em pastas, usamos o comando cd, dessa forma:


cd C:\Users

Se estiver na pasta desejada, basta digitar o caminho, assim:


cd Public

As mesmas dicas valem pra executar programas ou outros arquivos, mas não esqueça da extensão dos mesmos. Pode ser preciso colocar start no início e também pode ser necessário colocar entre aspas, caso tenha espaços no nome, dessa forma:


"Fotos do dia.jpg"

PS: O start pode ser usado com processos, nesse caso não precisa estar no caminho pré-definido, e também, além de arquivos, também abre pastas.

O start também pode ser usado com um parâmetro de inicialização, indiciando o que o programa abrirá, por exemplo:


start firefox.exe uol.com.br
start notepad.exe C:\Users\%username%\Documents\Notas\Contatos.txt

Se quiser renomear um arquivo, use o comando ren ou renameseguido pelo nome antigo e o nome que o substituirá, dessa forma:


rename "Fotos do dia.jpg" pictures.jpg

Se quiser deletar um arquivo pernamentemente pelo prompt, use o comando del, assim:


del "Fotos do dia.jpg"

Se usar o del em pastas, os arquivos dela serão excluídos, mas a pasta e os arquivos das subpastas permanecerão. Seria algo assim:


del "Nova Pasta"

Se quiser selecionar também os arquivos das subpastas, use o parâmetro /s. As pastas permanecerão.

Para selecionar os arquivos sem pedir confirmação, use o parâmetro /q.

Para incluir arquivos somente leitura use /f.

Você também pode usar todos os parâmetros juntos, dessa forma:


del /q /f /s "Nova Pasta"

Também existem parâmetros como /p para pedir confirmação, /a:r para excluir arquivos somente leitura, /a:s para arquivos do sistema, /a:h para arquivos ocultos e outros, também podemos usar o - como negação de qualquer um deles, por exemplo /a:-r para não excluir arquivos somente leitura.

Para fazer o mesmo com pastas, usamos rmdir ou rd, os parâmetros /s e /q são os únicos que também podem ser usados, da mesma forma, veja um exemplo:


rmdir /s /q "Nova Pasta"

PS: Cuidado com isso.

Também podemos mover arquivos, usando o comando move, seguido pelo caminho pro qual o arquivo será movido, dessa forma:


move "Fotos do dia.jpg" C:\Users\Public\Documents

Para copiar, usamos da mesma forma, com o comando copy, mas caso queira copiar com outro nome, já informe o caminho com o novo nome, dessa forma:


copy picture.jpg C:\Users\Public\Documents\foto.jpg

Tanto o move quando o copy podem ser usados com o parâmetro /y que suprime o pedido de substituição, caso exista um arquivo de mesmo nome, e da mesma forma o /-y perguntar se desejamos substituir ele.

PS: A barra tem que ser a \, senão não vai funcionar. Para copiar arquivos ocultos e pastas, use o xcopy. O * pode ser usado como coringa para vários arquivos em todos os casos (por exemplo, *.txt afetaria todos os arquivos de texto).

Para ver os diretórios dentro das pastas, use o comando dir.

Podemos também usar parâmetros no dir, o parâmetro /a:d lista só diretórios, o /a:-d para não listar diretórios (a negação também pode ser usada com outros parâmetros), /a:a apenas arquivos, /a:h para arquivos ocultos, /a:r para arquivos somente leitura e /a:s para arquivos de sistema (todos esses também podem usar a negação). Um uso dele seria dir /a:a.

Também podemos listar apenas um tipo de extensão de arquivo, por exemplo:


dir *.dll

Ou especificar o caminho que queremos verificar, caso não queira ver o conteúdo do diretório atual:


dir C:\Users

Podemos também salvar o conteúdo do dir ou de outro comando na área de transferência usando o comando clip, assim:


dir | clip

Para voltar um diretório, use o cd com dois pontos na frente, assim:


cd..

PS: Com um ponto, ele fica no mesmo diretório.

Você pode voltar a raiz do diretório da mesma forma, colocando uma barra após o cd, assim:


cd\

Digitar o nome do disco levará à ele, mesmo se for um removível (como D: ou E:).

PS: Tanto faz o lado da barra, e minúsculas não são diferenciadas. Mas alguns comandos podem não funcionar com a barra do lado errado.

Para limpar toda a tela CMD, basta executar o comando cls.

Comandos para Desligar

Para desligar, usamos o comando shutdown /s.

Para reiniciar, usamos shutdown /r.

Para programar isso, usamos o /t 600 (o número representa os segundos), por exemplo:


shutdown /r /t 200

Usamos o parâmetro /a para cancelar qualquer um deles. O /f para forçar a ação. O /c para exibir uma mensagem. E o /l só pra fazer logoff. Veja um exemplo:


shutdown /r /t 600 /c "Reiniciaremos em 10 Minutos"

Como Procurar Comandos já Digitados

Podemos usar o comando doskey /history para visualizar um comando já digitado. Mas se quiser repetir um comando já digitado, tecle F7 e F9.

PS: Podemos usar só o F7 e navegar até o comando para reexecutá-lo diretamente. Se usar o F9, ele reescreverá o comando sem executar novamente.

Como Encerrar Processos

Abra o CMD e digite tasklist para exibir os números dos códigos ativos, depois use o comando taskkill seguido do código do processo, por exemplo:


taskkill /im 352

Usar diretamente o nome do processo também dá certo (não esqueça da extensão exe):


taskkill /im opera.exe

Em casos de processos mais teimosos, você deve usar o /f e o /t antes do /im, dessa forma:


taskkill /f /t /im opera.exe

O /f força a exclusão do processo. O /t fecha processos filhos, o /im mata o processo.

Podemos usar o /pid para especificar um processo a ser encerrado, assim:


taskkill /f /pid 1026

Usando os Comandos para Verificar Erros

Para procurar e corrigir erros de disco, usamos o comando chkdsk. Para corrigir erros do sistema de arquivos automaticamente, usamos o /f. Para procurar setores defeituosos e tentar recuperá-los, usamos /r.

Você também pode usar os dois comandos juntos, e também definir o disco que quer verificar, dessa forma:


chkdsk /f /r E:

E também podemos usar o chkdsk /scan /forceofflinefix para uma verificação online, sem precisar reiniciar o PC.

Para exibir e modificar a verificação de disco usamos chkntfs C:, também podemos usar alguns parâmetros nele.

Também podemos usar sfc /scannow para verificar a integridade dos arquivos protegidos do sistema (necessários no Windows) e os repara. Se quiser apenas verificar os arquivos sem reparar, use o comando sfc /verifyonly

Para reparar a imagem do Windows, usamos dism /online /cleanup-image /scanhealth, e após a verificação, usamos dism /online /cleanup-image /restorehealth e dism /online /cleanup-image /startcomponentcleanup.

Em sistemas 32 bits, podemos forçar o uso de PAE, que permite acessar mais memória, digitando bcdedit /set nx alwaysoff, depois bcdedit /set pae forceenable e reiniciando o PC.

Escrevendo na Tela

Antes de mais nada, pode ocorrer de palavras acentuadas aparecerem com a codificação errada. Para corrigir isso basta usar o comando chcp para isso. Nos padrões brasileiros, seriam 850, 1252 ou 65001. Veja o exemplo para mudar o código:


chcp 1252

Para apenas visualizar a página ativa, use o chcp sozinho.

PS: Ao criar arquivos BAT, é recomendado colocar chcp 1252 no começo para evitar erros de acentos, principalmente nos casos em que usaremos o BAT para escrever em arquivos.

Se quiser testar alguma frase acentuada, use o comando echo pra isso, dessa forma:


echo Essa é uma frase com acentuação!

Ou em um arquivo:


echo Essa é uma frase com acentuação!>>C:\Users\%username%\Desktop\teste.txt

Para pular uma linha num conteúdo escrito, podemos usar echo.>>C:\Users\%username%\Desktop\teste.txt. Podemos usar o echo com ponto apenas digitando echo. no prompt para fazer o mesmo.

O echo pode ser usado com ou sem aspas.

No caso do CMD em si estar com os acentos desconfigurados, abra um prompt como administrador, na borda dele clique com o botão direito e vá em "Padrões".

PS: Usando dois >> ele adicionará uma nova linha no arquivo, caso exista, se usar um só > ele sobrescreverá o arquivo existente.

Usando com Redes e Internet

Para mudar o IP, podemos usar o comando ipconfig com os parâmetros /release (que libera o endereço IP) e na sequência o /renew (que renova o endereço IP), dessa forma:


ipconfig /release
ipconfig /renew

PS: Isso só vale para IPv4, para IPv6 usamos /release6 e /renew6 nos parâmetros.

Lembrando que isso afeta todas as conexões. Para afetar somente uma conexão específica, use o nome específico dela, como por exemplo ipconfig /release "Conexão Local".

Use o ipconfig /flushdns para liberar o cachê DNS. E depois digite ipconfig /registerdns para registrar e atualizar o DNS. Podemos também verificar o conteúdo do cache DNS digitando ipconfig /displaydns. Podemos inclusive parar e reiniciar os serviços DNS e DHCP com o comando net (os nomes são dnscache e dhcp), e depois reiniciar os mesmos.

Para exibir informações sobre o IP e o endereço MAC, digite ipconfig /all.

Para conferir o ping (latência) e a conectividade das páginas ou IPs, use simplesmente o comando ping seguido do site ou IP. O tracert é usado para rastrear a rota de um pacote.

Para descobrir o MTU da interface, digitamos netsh interface ipv4 show subinterfaces (pode ser ipv6 também).

Para selecionar o tamanho em bytes dos pacotes enviados pelo ping, usamos o /l seguido do número (por exemplo, ping /l 1500 www.google.com.br). Para selecionar a quantidade de requisições use o parâmetro /n seguido do número, por exemplo /n 6. Para desativar a fragmentação de pacotes, usamos o /f junto, por exemplo, ping /l 1500 /f www.google.com.br. O parâmetro /t envia requisições infinitas (Use Ctrl Break para uma interrupção temporária e mostrar os pacotes enviados e recebidos, para interromper totalmente use Ctrl C).

Podemos também usar parâmetros no tracert, como para aumentar a quantidade máxima de saltos com o /h, por exemplo tracert /h 60 www.google.com.br.

PS: Tanto no ping quanto no tracert, pode ser necessário colocar /4 para forçar IPv4 ou /6 para forçar IPv6.

Para liberar o cache ARP, basta usar netsh interface ip delete arpcache, para excluir o cache de destino use netsh interface ip delete destinationcache, para resetar o TCP/IP usamos netsh int ip reset all.

Ainda nos problemas de rede, podemos digitar o comando netstat /a /n /b para verificar todas as portas abertas, os IP's e os processos aos quais elas estão conectados.

Para descobrir o endereço MAC, basta simplesmente usar getmac no prompt. De forma mais detalhada, usamos getmac /v /fo list.

Para vermos o cachê ARP, usamos arp /a. Para excluir ele usamos arp /a /d (ou um IP específico usando arp /d 1.1.1.1, substituir o 1.1.1.1 pelo IP desejado).

Para resetar o catálogo do provedor winsock ao estado inicial, digite nbtstat /R, nbtstat /RR e netsh winsock reset catalog.

Para resetar o proxy, digite netsh advfirewall reset e netsh winhttp reset proxy.

Podemos usar route print para ver a rota da nossa rede. E também podemos adicionar e remover rotas especificando o IP com route add 192.168.0.0 mask 255.255.255.0 172.16.0.1 (na ordem rede a ser acessada, máscara da mesma e gateway por qual vai acessar, use a opção /p para adicionar de forma permanente) e route delete 192.168.0.0, respectivamente.

Podemos também utilizar o comando nslookup assim, para vermos dados sobre o servidor do site:


nslookup -q=ns www.google.com.br

Comando Runas

Para executar um programa como administrador com o comando runas, digite assim:


runas /savecred /user:nomedeusuario C:\Windows\notepad.exe 

Ou pode ser assim também:


runas /savecred /user:nomededominio\nomedeusuario C:\Windows\notepad.exe 

Isso pode ser colocado em atalhos.

Editar Dados de Registro

Para exibir as chaves, usamos reg query e o caminho desejado da chave, dessa forma:


reg query HKLM\Software

Para adicionar uma chave de registro pelo CMD, use o reg, dessa forma:


reg add HKLM\Software\NomeDaChave /v NomeDoValor /t REG_SZ /d "Dados do Valor" /f

O /v é o nome do valor (pode ser usado /ve para colocar um nome de valor vazio no valor padrão). Aspas são usadas apenas em dados de strings, outros tipos não se usam.

O /t são os tipos de dados, que são esses (o padrão é o REG_SZ, de strings):

ID do tipo Nome Simbólico Significado
0 REG_NONE Sem tipo definido
1 REG_SZ Valor de cadeia de caracteres UTF-16
2 REG_EXPAND_SZ Valor de cadeia de caracteres expansível
3 REG_BINARY Dados binários
4 REG_DWORD Valor DWORD, inteiro sem sinal de 32 bits
7 REG_MULTI_SZ Cadeia de caracteres múltipla (lista ordenada)
11 REG_QWORD Valor QWORD, inteiro de 64 bits

O /d são os valores a serem atribuídos ao nome do valor do registro adicionado.

O /f força a inserção da chave sem perguntar se ela já existe e a substituí.

Caso seja pra adicionar um valor à uma chave já existente, use o mesmo método, usando o mesmo caminho da chave, com o novo nome do valor e os dados do novo valor.


reg add HKLM\Software\NomeDaChave /v NovoValor /t REG_SZ /d "Novos Dados" /f

Exemplo com valores binários:


reg add HKLM\Software\NomeDaChave /v NomeDoBinario /t REG_BINARY /d 000001 /f

Para mudar um valor já existente, basta atribuir ao valor já existente, os novos dados. Por exemplo:


reg add HKLM\Software\NomeDaChave /v NomeDoValor /t REG_SZ /d "Outros Dados" /f

PS: Os dados inseridos podem ser por exemplo, um comando para o CMD ou execução de algum programa EXE ou BAT (sem o start, apenas o caminho do mesmo), pode não funcionar pra alguns tipos de aplicações como Java. Nesse caso o tipo é o REG_SZ. E as chaves são como as pastinhas do registro, os valores são como as variáveis.

Também podemos copiar as chaves e seus valores da mesma forma, usando o copy, assim:


reg copy HKLM\Software\NomeDaChave HKCU\Software\NomeDaChave /s /f

PS: O /s copia as subchaves junto.

Se for apagar apenas um valor específico da chave, basta fazer dessa forma:


reg delete HKLM\Software\NomeDaChave /v NomeDoValor /f

Para apagar uma chave já existente, use apenas o reg delete e o /f no final para forçar a exclusão.


reg delete HKLM\Software\NomeDaChave /f

PS: Pode ser necessário colocar o nome da chave ou valor entre aspas, caso o nome tenha espaços.

Uma forma que podemos utilizar, é pra manipular conteúdos inicializados com o Windows, indo na chave Run de HKCU ou HKLM, por exemplo:


reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v Inicializando /t REG_SZ /d "\"C:\Windows\executavel.exe\"" /f

Lembrando de HKCU é do usuário atual e HKLM é do sistema todo.

PS: Nesse caso, só utilizamos sequências de escape nas aspas, se elas existirem, as barras não utilizam, e podemos usar variáveis do sistema.

Da mesma forma, podemos utilizar esse método pra deletar o valor (inclusive podemos utilizar para excluir da inicialização programas teimosos e malwares):


reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v Inicializando /f

Excluir Tarefas Agendadas

Para exibir as tarefas agendadas, use schtasks /query.

Também podemos excluir tarefas agendadas, usando o schtasks /delete, dessa forma:


schtasks /delete /f /tn "Driver Booster Scheduler"

PS: O /tn é o que especificará o nome da tarefa a ser excluída.

Essas opções acima costumam ser utilizadas com outros parâmetros, como adicionar, por exemplo.

Administrar Serviços

Para administrar os serviços inicializados ou parados, usamos o net seguido da opção desejada, dessa forma:

PS: Para ver os serviços usados, utilize o comando sc query.

Para gerenciar e também excluir serviços, usamos o sc com os seguintes parâmetros:

Administrando Usuários

Para criar um usuário novo com senha, basta digitar isso:


net user nomedousuario senha /add

PS: Caso queira criar um usuário sem senha, basta omití-la.

Caso queira adicionar/alterar a senha de um usuário local, digite isso:


net user nomedousuario novasenha

Para dar privilégios de administrador ao usuário criado:


net localgroup administradores nomedousuario /add

Para remover o usuário dos administradores:


net localgroup administradores nomedousuario /delete

Para excluir um usuário:


net user nomedousuario /delete

Para listar os usuários existentes:


net localgroup usuários

Para listar os administradores:


net localgroup administradores

Pode ser que, caso o sistema não esteja configurado em português, que tenha que usar users e administrators ao invés de usuários e administradores.

PS: Rode como administrador esses comandos.

Comandos no CMD

Agora que vimos alguns comandos do Windows, veja alguns dos comandos mais usados:

Para interromper algum comando sendo executado, dê um Ctrl C. Para ajuda a um comando, digite ele seguido de /?, como por exemplo dir /?.

Como coringa, usamos o *, podendo inclusive usar nas extensões, como *.*. E comandos do CMD não são case-sensitive.

A variável %errorlevel% guarda o status do último comando executado. Se o mesmo foi executado corretamente, ele retornará 0, se o comando der erro ele retornará outro número diferente de zero (por exemplo, comando não encontrado retorna 9009). Podemos visualizar o conteúdo dessa variável digitando no prompt echo %errorlevel%. Esse código também pode ser usado em BAT Script também, como em condicionais e laços de repetição.

Muitos desses comandos também podem ser usados no Executar, mas são melhores visualizados no CMD. No entanto, esses são mais específicos pro Executar (apesar de funcionarem no CMD também):

PS: Tome cuidado com as fork bombs, que chamam vários processos iguais até travar o sistema. No CMD do Windows, uma fork bomb pode ser assim (quase sempre num arquivo BAT):


:: Não execute nada desse código:

:B

start %0

goto B

Só pra entender, é um comando que chama o próprio arquivo de lotes várias vezes em uma espécie de loop (%0 é referência ao próprio arquivo de lote).

Criação de Arquivos BAT

Para criar arquivos BAT, crie um arquivo de texto no Bloco de Notas e salve com a extensão .bat, no formato ANSI, (ou use o copy con do CMD, o edit do DOS ou echo com arquivo no CMD), para criar um arquivo de scripts novo, e coloque os comandos dessa forma:


@echo off

chcp 1252

cls

title Introdução ao BAT em Windows

echo Criação do BAT em Windows Efetuada com Êxito.

echo.

pause

No código acima, o @echo off tira a exibição dos caminhos do programa, o arroba faz isso em todos os comandos que ele estiver do lado, no entando, usando o echo off dessa forma, ele automaticamente oculta a exibição de todos. O chcp 1252 é pra corrigir acentos (principalmente nos casos que escrevermos arquivos pelo CMD), e o echo com o ponto pula uma linha.

Dessa forma, podemos criar arquivos que executem várias funções de uma vez. Todos os comandos do CMD funcionam normalmente no BAT, mas alguns caracteres podem não funcionar. Podemos inclusive, usar variáveis e operadores condicionais e de repetição.

Variáveis no CMD

Para utilizar variáveis no CMD, usamos o comando set nome=, usada para declarar variáveis (tem que estar com o = tudo junto, tipo set num=3). As variáveis são usadas com a porcentagem entre eles (tipo %num%). Podemos também atribuir um caminho de pasta à elas, programas ou sites à elas. Veja um exemplo em BAT:


@echo off

set pasta=C:\Users\%username%\Pictures

start explorer.exe %pasta%

exit

PS: Variáveis em CMD não diferenciam maiúsculas de minúsculas.

Se quiser pedir dados do usuário em variáveis, use o parâmetro /p para ele ser inserido na variável. O parâmetro /a é usado para operações matemáticas, cujo resultado será jogado na variável. Veja um exemplo:


@echo off

set /p nome=Digite seu nome: 

set /p idade=Digite sua idade: 

set /a ano=2017 - idade

echo Olá %nome%, você nasceu em %ano%.

exit

PS: Você pode usar %username% como um coringa que mostrará o nome do usuário logado no momento. O parâmetro /i, é usado para não diferenciar maiúsculas de minúsculas.

Essas são as variáveis do sistema (usadas também entre dois %):

Variável Conteúdo Exibido
USERPROFILE C:\Users\UsuarioAtual
PROGRAMDATA C:\Programdata
ALLUSERSPROFILE C:\Programdata
WINDIR C:\Windows
SYSTEMROOT C:\Windows
PROGRAMFILES C:\Program Files
COMMONPROGRAMFILES C:\Program Files\Common Files
USERNAME "UsuarioAtual"
COMPUTERNAME Nome do Computador
LOCALAPPDATA C:\Users\Usuário Atual\AppData\Local
APPDATA C:\Users\Usuário Atual\AppData\Roaming
ERRORLEVEL Código de Erro do Último Comando (quando é diferente de 0).
CD Pasta Atual
USERDOMAIN Nome do Computador
SYSTEMDRIVE C:
HOMEDRIVE C:
SYSTEMDIRECTORY C:\Windows\System32
COMSPEC C:\Windows\System32\cmd.exe
TEMP C:\Users\Usuário Atual\AppData\Local\Temp
TMP C:\Users\Usuário Atual\AppData\Local\Temp
HOMEPATH \Users\Usuário Atual
PATH Retorna o path do sistema
PATHEXT Retorna as extensões de executáveis
OS Retorna o nome do Sistema Operacional
PROCESSOR_IDENTIFIER Retorna dados sobre o processador
PROCESSOR_ARCHITECTURE Retorna a arquitetura do processador

PS: Em sistemas 64 bits, a variável PROGRAMFILES é referente a pasta de aplicações 64 bits, para acessar a pasta de aplicações 32 bits, use PROGRAMFILES(x86). O mesmo vale para a COMMONPROGRAMFILES, que em aplicativos de 32 bits é COMMONPROGRAMFILES(x86).

Operações Aritméticas

Como visto no exemplo anterior, é possível fazer operações aritméticas no BAT, normalmente com +, -, * e /, mas lembrando que o % não funciona como cálculo de módulo, devemos utilizar dois %% para isso. Ao fazer contas diretamente pelo CMD usamos apenas um %.

Veja um exemplo de uso para operações aritméticas:


set /p num1=Digite o primeiro número: 

set /p num2=Digite o segundo número: 

cls

set /a soma=num1 + num2

set /a subs=num1 - num2

set /a mult=num1 * num2

set /a divi=num1 / num2

set /a rest=num1 %% num2

echo A soma entre %num1% e %num2% é igual à %soma%.

echo A subtração entre %num1% e %num2% é igual à %subs%.

echo A multiplicação entre %num1% e %num2% é igual à %mult%.

echo A divisão entre %num1% e %num2% é igual à %divi% com resto de %rest%.

echo.

pause

Também podemos fazer operações aritméticas sem variáveis, apenas digitando set /a seguida da operação, como set /a 10 + 5, ele retornará o resultado da conta.

Condicionais IF, ELSE e ELSE IF

Podemos também usar condicionais no BAT, usando o if, o else e o else if. Dessa forma:


@echo off

set /p num=Digite um Número: 

if %num% lss 10 (
echo É menor que 10.
) else if %num% gtr 10 (
echo É maior que 10.
) else (
echo É igual à 10.
)

pause

PS: Assegure-se que o fecha parênteses esteja na mesma linha do else ou else if, pra não dar erro.

Veja outro exemplo de BAT para criar pastas:


@echo off

cd C:\Users\%username%\Desktop

if exist teste (
echo Essa Pasta já Existe.
) else (
mkdir teste & echo A Pasta foi Criada.
)

pause

PS: O & é para executarmos mais de um comando na mesma linha.

Veja algumas opções que podemos usar com números, só lembrando que equ e neq é necessário usar com letras e palavras também:

equ Igual
neq Diferente
lss Menor que
leq Menor que ou igual
gtr Maior que
geq Maior que ou igual

Veja um exemplo para calcular médias:


set /p n1=Digite a primeira nota: 

set /p n2=Digite a segunda nota: 

:: Não esqueça da ordem de precedência:
set /a med=(n1 + n2) / 2

if %med% lss 4 (
set sit=Reprovado
) else if %med% gtr 6 (
set sit=Aprovado
) else (
set sit=Em Recuperação
)

cls

echo A média das notas é %med%. %sit%!

Laço de Repetição FOR

Para criar uma estrutura de repetição em BAT, usamos o for, dessa forma:


@echo off

set cao=Volta o cão arrependido, com suas orelhas tão fartas, com seu osso roído, e com o rabo entre as patas...

for /l %%r in (1 1 44) do (
echo %cao%
)

pause

O /l fará as incrementações. A letra com dois % na frente (%%r)é um parâmetro que pode ser qualquer letra. O in passará os números de incremento, com eles entre parênteses, representando na ordem, o início, incremento e fim do mesmo (no caso de usar decremento, apenas coloque o início maior que o fim, e colocar sinal de - no decremento, como (10 -1 0)). O do especifica os comandos a serem executados.

Para fazer o incremento também aparecer no echo, fazemos dessa forma:


@echo off

set cao=Volta o cão arrependido, com suas orelhas tão fartas, com seu osso roído, e com o rabo entre as patas...

for /l %%r in (1 1 44) do (
echo %%r - %cao%
)

pause

Veja outro exemplo com um programa que exibe a tabuada de um número:


@echo off

setlocal EnableDelayedExpansion

:inicio
set /p num=Digite um número para ver sua tabuada: 

echo.

echo Tabuada de %num%:

echo.

echo ---------------

set cont=1

for /l %%t in (1 1 10) do (
set /a res=%num% * !cont!

echo %num% x !cont! = !res!

set /a cont+=1
)

echo ---------------

echo.

set /p opc=Deseja digitar outros números? [S/N] 

if /i %opc%==S (
cls

goto inicio
) else (
exit
)

O Delayed Expansion fazem as variáveis mudarem de nome para valores, então muitas vezes é necessário habilitar elas pra usar com contas.

Array

Para criar um array num BAT podemos fazer assim:


set vetor=1 2 3 4

:: Esse for funciona como um for iterator

for %%v in (%vetor%) do ( 
echo %%v 
)

Ao fazer um array de conteúdos não numéricos, fazemos definindo as posições, assim:


setlocal EnableDelayedExpansion

set vogais[0]=A
set vogais[1]=E
set vogais[2]=I
set vogais[3]=O
set vogais[4]=U

for /l %%n in (0 1 4) do ( 
echo !vogais[%%n]! 
)

Funções em BAT

Podemos simular funções em BAT, veja um exemplo simples de criação de uma função:


call:mensagem

:mensagem

echo Introdução à Funções em BAT

PS: As funções em BAT deverão sempre ficar no final do script.

Para passarmos parâmetros, não os colocamos dentro dos parênteses, eles são jogados nas variáveis %~1, %~2, %~3, etc. Por exemplo:


call:multi 10 5

:multi n1 n2
:: %~1 e %~2 são os parâmetros

set /a res=%~1 * %~2

echo A multiplicação é %res%

Exemplo com parâmetros:


call:soma 10 5

:soma n1 n2

set /a res=%~1 + %~2

echo %res%

Clique Aqui e veja o código de um arquivo BAT no qual ele adicionará dados de agenda à um arquivo TXT.

Veja algumas dessas dicas: