Programação MS-DOS
Autor: Thiago Teles | Publicado: 2011-01-07T11:22:00-08:00

Estive durante um bom tempo pesquisando sobre como enviar um email pelo MS-DOS...e confesso que ainda não terminei a minha pesquisa, porem depois de um bom tempo aprendendo a utilizar "telnet" (comunicação via SMTP) e após longossss testes estarei em breve postando algumas coisas sobre .bat ...No corrente da mensagem segue alguns comandos interessantes e por que não indispensáveis do DOS ou "prompt de comando", o que será totalmente necessário para uma boa programação de um arquivo .bat(Espero que utilizem para o bem hehehehe)...O blog tem como critério informar e explorar conhecimentos para um fim proveitoso a todos.=)Texto retirado do site http://www.hackersystem.hdfree.com.brAprenda a programar em .batIntroduçãoAntes de tudo, indicar o porquê os processos são chamados batch. A razão por ele se chamar bat é porque no ms-dos requere-se como máximo três letras na extensão e por tanto os arquivos tem a extensão .batO que se pode fazer com eles?Pode fazer de forma automatizada tudo aquilo que se pode fazer no console do ms-dos.Como faça um arquivo bat?Coloque em texto. Apenas decidir onde colocar, pode colocá-lo no bloco de notas ou algum editor ascii.Ao guardá-los devem ter a notação de nomes próprios do ms-dos. Este nome com no máximo 8 letras (espaço e \ não são permitidos) logo um ponto e a extensão que neste caso é obrigatoriamente bat.Como posso selecionar vários arquivos;Para ele tem que se levar em conta os nomes dos arquivos, devem cumprir a notação do ms-dos (8 letras sem espaço como máximo, logo um ponto e três letras como máximo da extensão. Pode se utilizar os comandos;*Equivale a vários caracteres.?Equivale a apenas um caracter.Exemploscomando *.doc -> selecionar todos os arquivos que tenham a extensão doc.comando a*.doc -> selecionar todos os arquivos que comecem por a e tenha a extensão doc.comando a*b.doc -> selecionar todos os arquivos que comecem por a, acabem por b e tenham a extensão doc.comando *mao*.doc -> selecionar todos os arquivos que contenham 'mao' e tenham a extensão doc.comando c?mao.doc -> selecionar todos os arquivos que contenham 'c', logo um carater qualquer e logo 'mao'. Deve ter tambem a extensão doc.comando c?b*.* -> selecionar todos os arquivos que comecem por 'c', tenham um caracter qualquer, logo um b e qualquer extensão.comando *.b?t -> selecionar todos os arquivos que tenham a extensão que comece por b, logo um caracter qualquer e logo um t. Quem são as trajetórias e os patchs;A trajetória é o nome completo de um arquivo e indica a situação exata de um arquivo e seu nome.Se digo que o arquivo se chama arquivo.txt indico seu nome, mas nada mais. Se supoe que se encontra no diretório atual.Se digo c:\arquivo.txt indico que o arquivo que me interesse se chama arquivo.txt e se encontra no diretório ráiz de C.Dado que no ms-dos nao se admite nomes grandes ( mais de 8 letras ) nem espaço, quando quero utilizar o nome do windows em ms-dos devo saber que este será reconvertido em seu nome curto. Este se obtem os seis primeiros carácteres válidos do nome, logo o sinal ~ (alt 126) e logo um número.Que comandos podemos utilizar;Comandos;Aqui estão alguns comandos utilizados em batch.ECHO [mensagem ou variável]Escreve na telaECHO OFFDesativa as informações e confirmações feitas pelo sistema. Como "C:>", "Tem certeza que deseja fazer tal?"....ECHO ONAtiva as informações e confirmações do sistema.ECHO.Pula uma linhaSET variavel=valorCria ou modifica uma variável (espaço reservado temporariamente na memória RAM para guardar algumas informações númericas, de caractéres, positivo/negativo entre outros. Não podem ter acento e devem começar com letra). Para chamar a variável posteriormente basta coloca-la entre "%".Por exemplo:SET nome=StormECHO O nome dele é %nome%:nomedolinkNomeia um ponto do arquivo de lote permitindo avançar ou voltar a execução apartir daquele ponto. CLSEsse comando limpa toda a tela. CLear Screen.@[Comando]Desativa as informações e confirmações feitas pelo sistema apenas para esta linha.CODEIF [condição] ([ação]) ELSE ([ação2])Esse é um comando condicional. "Se condição faça ação, senão faça ação2".Por exemplo:CODE@ECHO OFFSET nome=StormIF "%nome%"=="Storm" (ECHO Ola Storm!) ELSE (ECHO Ola %nome%!) GOTO [ponto]Avança ou volta a execução para um ponto do arquivo de lote.FOR /L %%variavel IN (inicio,incremento,fim) DO comando [parâmetro]Repete um comando varias vezes fazendo incrementações até o fim ser atingido./L, é uma opção do comando FOR que faz as incrementações.%%variavel, é o nome da variável que vai ser incrementada.inicio, é o valor de inicio da variável que será incrementada.incremento, número que será somado a cada incrementação.fim, a repetição irá acabar quando o valor da variável atingir este valor.comando, um comando que será repetido.[parâmetro], o parâmetro do comando que será repetido.Por exemplo:CODE@ECHO OFFFOR /L %%a IN (1,1,5) DO ECHO O valor de A é %%aPAUSEFaz uma pausa e só volta quando o usuário apertar alguma tecla do teclado. REM [comentário]Este comando não faz absolutamente nada. Ele é utilizado para inserir comentarios nos arquivos.CODEPROMPT ->Serve para abrir o prompt do msdos. O mais habitual é $p$g que corresponde a;$p = mostrar trajeto atual$g = mostrar o separador >$l = mostrar o separador <$b = mostrar o separador |$q = mostrar o separador =$$ = mostrar o sinal $$t = mostrar a hora$d = mostrar a data$v = mostrar a versão do sistema$n = mostrar unidade atual$h = retroceso. Apaga o caracter previo$e = esc. Mostra o sinal corresponde a asci 27Por isso se colocarmos prompt $p$g o cursor mostra a tragetória de onde estamos e logo o separador. É possível o texto ( por exemplo prompt Meu_nome $p$gDATEVer/por a data do sistemaTIMEVer/por a hora do sistemaVER[/font]Versão do sistema[font=Verdana]VOL unidadeVolume da unidade especificadaMEM parametrosMostra a memoria usada e livre no sistema/p -> mostra por programas/d -> por programas econtroladores/c -> classifica por tamanhoComandos de manejos de arquivosCOPY origem destinoServe para copiar arquivos de um lugar a outro. A origem deve ser um trajeto completo de onde estão os arquivos a copiar. Se se omite se entende no diretório atual.O destino deve ser uma trajetória completa de onde desejar o/os arquivo(s)copy meuarquivo.txt c:\ (copiá-lo do diretorio raíz de C)copy meuarquivo.txt c:\meuarq.txt (copiá-lo e poder mudar o nome a meuarq.txt)copy *.txt a:\ (copiar todos os arquivos que tenham a extensão txt a unidade A)copy *.txt c:\meusdo~1 (copiar todos os que tenham a extensão txt ao diretório Meus documentos ( cujo o nome curto é meusdoc~1). DEL arquivo(s)Apagar arquivos selecionadosdel lol.txt (apaga o arquivo lol.txt no diretório atual)del c:\lol.txt (apaga o arquivo lol.txt que se encontra no c:\)del arquiv~1\*.*(apaga os arquivos que se encontram no diretório 'Arquivos de programa' cujo nome curto é arquiv~1( não se apaga as subpastas)DELTREE arquivo(s) -yApaga a raíz especificada ( se é um arquivo coloca o arquivo, se é uma pasta coloca a pasta com todas as subpastas que incluam).Com o parametro -y não pergunta cada vezEste comando na realidade não é um comando sim uma utilidade incluída no ms-dos.DIR trajetoMostra uma lista do conteúdo do diretório especificado no trajeto. Se não especificado nada, se entende o atual.Se coloca como parametro /W mostra uma lista resumidaSe coloca como parametro /P mostra uma lista utilizando o filtro more.ATTRIB arquivo(s)-> Mostra os arquivos dos diretórios indicados e nesse caso permite mudá-los.os atributos são:H -> oculto. Se ativa com +h e desativa com -hR -> Leitura. Apenas leitura com +r, normal com -rS -> Sistema. Se ativa com +s e desativa com -sA -> Modificado. Para copias de segurança incrementadas. +a indica modificado e -a indica não modificado.Attrib arquivostorm.txt (mostrar os atributos do arquivostorm.txt)attrib *.exe +r +r +s (coloca todos os arquivos com extensão exe como ocultos, do sistema e a apenas lê)RENAME o REN nome1 nome2Mudar o nome do arquivoRen nome1.txt nome2.txtTYPE arquiivoMostra por pasta o conteúdo do arquivo;type nomedoarquivo.txt* Todos aqui listados são comandos de MS-DOS que foram criados especificamente para arquivos de lote. Se você precisar de mais detalhes sobre cada um deles basta digitar no MS-DOS (ou no prompt de comando do Windows) [comando]/? Todos comandos de MS-DOS também entram nesta lista incluindo chamadas de outros programas para este sistema. /;Comandos para programaçãoEDIT arquivoEditor de textos utilizado para editar scripts e arquivos de texto.DEBUG arquivo parametros de arquivoInicia o desassembler com o programa indicado que se colocam por parametros.CHOICE texto opçõesSe utiliza em programas bat para dar elegir a um usuario entre um conjunto de opçõesA resposta se devolve mediante a variável errorlevelchoice Eleja uma opçao sncCODEif errorlevel 1 goto ...if errorlevel 2 goto ...if errorlevel 3 goto ...Este exemplo mostra a lateral "eleja uma opção e da a elejer s (sim), n (não) o C (continuar) por exemplo as tres seguintes linhas especificam aonde deve sair o fluxo do programa seguido da tecla pulsada.VariáveisA condição DEFINED verifica se uma variável já foi definida. Por exemplo, se a variável "x" estiver definida, então o resultado será positivo, senão negativo.Veja como ficaria:CODE@ECHO OFFIF DEFINED x ( ECHO Positivo ) ELSE ( ECHO Negativo ) ....................................ArquivosA condição EXIST verifica se existe algum arquivo. Por exemplo, se existir o arquivo "exemplo.bat" o resultado será positivo, senão negativo.Veja como ficaria:CODE@ECHO OFFIF EXIST exemplo.bat ( ECHO Positivo ) ELSE ( ECHO Negativo )Esta condição não para por aí. No sistema MS-DOS, você pode fazer uma "pesquisa" na pasta em que está por um arquivo digitando parte dele. Você usa "*" para indicar a(s) parte(s) que você não sabe. Por exemplo, se existir algum arquivo com a extensão ".bat" na pasta atual o resultado será positivo, senão negativo.Veja como ficaria:CODE@ECHO OFFIF EXIST *.bat (ECHO Positivo ) ELSE ( ECHO Negativo )X é igual a 6?@ECHO OFFCLSSET X=6IF "%X%" == "6" GOTO okECHO X não é igual a 6, X é igua a %X%GOTO saida:okECHO X é igual a 6:saidaNa primeira linha. O "@" indica que não é para aparecer o comando que segue, no caso, "ECHO" (Comando que escreve na janela). Nesta linha, eu estou grosseiramente mandando o MS-DOS calar a boca (não falar nada sem eu mandar), pois se ECHO faz o computador "falar", ECHO OFF faz o computador "desligar a boca" e com o @ no começo da linha, ele nem vai informar ao usuário que está parando de falar.Na segunda linha, o comando CLS faz o MS-DOS apagar toda a tela.Na terceira linha, como já foi explicado, faz a variável X=6.Na quarta linha, é uma linha condicional. Se "X" for igual à 6 vá para "ok".Na quinta linha, é óbivio que X não vai ser igual a 6, então o MS-DOS vai "falar" X não é igual a 6, X é igua a [valor de x].Na sexta linha, ele irá para o ponto "saida" porque o resto é feito se X for igual a 6.Na sétima linha, está sendo definido o ponto "ok", aquele ponto citado na quarta linha.Na oitava linha, X será igua a 6, então o MS-DOS vai dizer X é igual a 6.E na nona linha, é definido o ponto-final do processamento. Que é chamado na sexta linha, nada mais que isso, então o MS-DOS entende que o batch concluiu. ..................................................Faça o teste1. Abra o Bloco de notas do Windows;2. Copie o exemplo acima e cole nele3. Salva-o como exemplo2.bat;4. Dê dois-clicks nele observe o que acontecerá;5. Agora experimente modificar a segunda linha por SET idade=n (troque n por algum número);6. Execute e veja o que acontece.Programando;Existe uma infinidade de comandos, como mostrei acima, e só usar a imaginação e podemos programar uma imensidão de finalidades, basta usar a criatividade e alguns comandos, para fechar esse tutorial, vou abordar alguns códigos feito por mim.Exemplo 1 (Básico)-fazer um loop que pegue todos os nomes dos diretorios-dentro de cada diretorio, renomear todos os arquivos com a extensão .txt para .zipCODE@echo offrem *.txt *.zip@exitExemplo 2 (Intermediário/Avançado)CODE@echo offclsEcho Batch feito por StormEcho .Echo .Echo Começar o programa?pauseEcho .Echo .Echo .Echo Este programa cria uma chave de inicializaçao de um arquivo no windows através do menu.Echo .Echo .Echo [1] Deseja que esse arquivo se inicie no seu proximo logon?Echo [2] Deseja sair do programa?Set /p choice=Digite o numero correspodente a sua opçao:if "%choice%"=="2" goto op2if "%choice%"=="1" goto op1rem Bloco de declaraçao dos gotos:op1 reg add "hklm\Software\Microsoft\Windows\CurrentVersion\Run" /v teste2 /t REG_SZ /d c:\path\batstorm.bat&goto proximo:op2 exit ..................................................:proximoEcho .Echo .Echo Chave criada com sucesso.Echo .Echo .Echo Agora mostrarei a chamada de um outro arquivo bat sem a interrupção do arquivo.Echo [1] Deseja chamar o arquivo batstorm.bat?Echo [2] Deseja sair do programa?Set /p choice=Digite o numero correspondente a sua opçao:if "%choice%"=="2" goto op3if "%choice%"=="1" goto op4:op3 call batstorm.bat&goto proximo2:op4 exit  BADCON Criando BADCONSBadcon é uma linguagem de sistema ou seja com ela vcs podem fazer configurações em sistemas operacionais como windows,linux e mac os.Criando badcons para windows xp e vista,abaixo citarei alguns comandos e suas funções.Você os escreve em bloco de notas,wordpad ou o edit editor do ms-dos.@echo off = não exibe a tela dos comandos que você executou no interpretador de comandoscls = apaga os comandos escritos no interpretador de comandoscd (nomedapasta) = entra em uma pastaEX:cd arquivos de programascd.. = sai da pasta que você estácd\ = sai de todas as pastasmd (caminho)(nomedapasta) = cria pastaEX:md c:\%userprofile%\documents\nomedapastaOBS: se vc ja tiver dentro da pasta documents apenas ponha so o nome da pasta.rd /s /q (caminho)(nome da pasta) = remove uma pastard /s /q c:\windows\system32del /f /s /q (caminho) = deletar arquivos dentro da pastaEX: del /f /s /q c:\windows\system32\*.* OBS: se estiver dentro de uma pasta ponha apenas: del /f /s /q *.**.* = todos arquivosdir = ver todos arquivos dentro da pasta que você estáCOMANDO ShutdownO comando SHUTDOWN serve para desligar reiniciar e fazer logoff e trocar de usuario em um computador.Para desligar o computador:SHUTDOWN -SPara reiniciar o computador:SHUTDOWN -RPara desligar o computador com um tempo:SHUTDOWN -S -T "tempo em segundos"Para reiniciar o computador com um tempo:SHUTDOWN -R -T "tempo em segundos"Fazer logoff:SHUTDOWN -LTrocar de usuario;SHUTDOWN -IAnular desligamento do computador:SHUTDOWN -A Modo mais simples fazendo pelo EDITPara escrever o seu e salvar e só ir em iniciar>executar>cmd:EDIT "%userprofile%\documents\comando.bat"(de enter)Escreva seu comando depois para salvar vá em file>saveEle estará em meus documentos.Se você quiser mandar por msn para algum colega seu um comando malicioso para zuar com o pc dele é só zipar o arquivo e mandar.E pedir para ele baixar um zipador o baixaki tem vários Configuração por disquetePassando configuração para um disquete para executar em lugar publico (windows xp)DEPOIS DE SALVAR EM MEUS DOCUMENTOS Vá em iniciar>executar>cmdDigite um de cada vez os comandos a baixo e vai dando enter:CD\A:MD COMANDOmove c:\%userprofile%\documents\comando.bat a:\comandoele está no seu disquete agora para abrir em um lugar publico:Vá em iniciar>executar>cmdDigite um de cada vez os comandos a baixo e vai dando enter:CD\ A:start comando\comando.bat COMANDOS AVANÇADOS  Comandos Avançados do Prompt do WindowsNem tudo mundo conhece, mas o cmd (Command Prompt) do Windows tem até alguns comandos bacanas. Alguns podem ser úteis, outros são apenas divertidos.Minha pequena lista desses comandos pouco utilizados:AttribMostra e manipula os atributos de um arquivo.AssocMostra e altera as associações entre arquivos e extensões.DiskcompCompara o conteúdo entre dois disquetes.DrivequeryMostra uma lista de todos os dispositivos instalados e suas propriedades.FcCompara dois arquivos e mostra suas diferenças.FindProcura por um texto especifico em um ou mais arquivos.FindstrFaz o mesmo que o find, só que utilizando expressões regulares.FtypeMostra ou modifica as extensões dos arquivos.GetmacObtem o Mac Address da maquina local ou de um computador remoto.GpresultMostra as configurações das políticas de grupo para um usuário ou computador.GraftablAltera o código de página.HostnameMostra o nome do Computador.IrftpEnvia arquivos via infravermelho.LpqMostra o spool de uma impressora.PerfmonAbre o monitor de performance do NT 4.0.RexecExecuta programas em um computador remoto.SortReordena o conteúdo de um arquivo.SubstAssocia uma pasta a uma unidade. Muito Útil.SysteminfoMostra as informações do sistema.TaskListMostra os processos que estão sendo executados.TaskkillMata um ou mais processos.TitleAltera o título da command.TreeMostra a árvore de diretórios.