Você está na página 1de 24

Introduo Antes de tudo, indicar o porqu os processos so chamados batch.

A razo por ele se chamar bat porque no ms-dos requere-se como mximo trs letras na extenso e por tanto os arquivos tem a extenso .bat O que se pode fazer com eles? Pode fazer de forma automatizada tudo aquilo que se pode fazer no console do msdos. Como faa 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 notao de nomes prprios do ms-dos. Este nome com no mximo 8 letras (espao e \ no so permitidos) logo um ponto e a extenso que neste caso obrigatoriamente bat. Como posso selecionar vrios arquivos; Para ele tem que se levar em conta os nomes dos arquivos, devem cumprir a notao do ms-dos (8 letras sem espao como mximo, logo um ponto e trs letras como mximo da extenso. Pode se utilizar os comandos; *Equivale a vrios caracteres. ?Equivale a apenas um caracter. Exemplos comando *.doc -> selecionar todos os arquivos que tenham a extenso doc. comando a*.doc -> selecionar todos os arquivos que comecem por a e tenha a extenso doc. comando a*b.doc -> selecionar todos os arquivos que comecem por a, acabem por b e tenham a extenso doc. comando *mao*.doc -> selecionar todos os arquivos que contenham mao e tenham a extenso doc. comando c?mao.doc -> selecionar todos os arquivos que contenham c, logo um carater qualquer e logo mao. Deve ter tambem a extenso doc. comando c?b*.* -> selecionar todos os arquivos que comecem por c, tenham um caracter qualquer, logo um b e qualquer extenso. comando *.b?t -> selecionar todos os arquivos que tenham a extenso que comece por b, logo um caracter qualquer e logo um t. Quem so as trajetrias e os patchs; A trajetria o nome completo de um arquivo e indica a situao 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 diretrio atual. Se digo c:\arquivo.txt indico que o arquivo que me interesse se chama arquivo.txt e se encontra no diretrio riz de C.

Dado que no ms-dos nao se admite nomes grandes ( mais de 8 letras ) nem espao, 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 carcteres vlidos do nome, logo o sinal ~ (alt 126) e logo um nmero. Que comandos podemos utilizar; Comandos; Aqui esto alguns comandos utilizados em batch. ECHO [mensagem ou varivel] Escreve na tela ECHO OFF Desativa as informaes e confirmaes feitas pelo sistema. Como C:>, Tem certeza que deseja fazer tal?. ECHO ON Ativa as informaes e confirmaes do sistema. ECHO. Pula uma linha SET variavel=valor Cria ou modifica uma varivel (espao reservado temporariamente na memria RAM para guardar algumas informaes nmericas, de caractres, positivo/negativo entre outros. No podem ter acento e devem comear com letra). Para chamar a varivel posteriormente basta coloca-la entre %. Por exemplo: SET nome=Storm ECHO O nome dele %nome% :nomedolink Nomeia um ponto do arquivo de lote permitindo avanar ou voltar a execuo apartir daquele ponto. CLS Esse comando limpa toda a tela. CLear Screen. @[Comando] Desativa as informaes e confirmaes feitas pelo sistema apenas para esta linha.

CODE IF [condio] ( [ao] ) ELSE ( [ao2] ) Esse um comando condicional. Se condio faa ao, seno faa ao2. Por exemplo: CODE @ECHO OFF SET nome=Storm IF %nome%==Storm ( ECHO Ola Storm! ) ELSE ( ECHO Ola %nome%! ) GOTO [ponto] Avana ou volta a execuo para um ponto do arquivo de lote. FOR /L %%variavel IN (inicio,incremento,fim) DO comando [parmetro] Repete um comando varias vezes fazendo incrementaes at o fim ser atingido. /L, uma opo do comando FOR que faz as incrementaes. %%variavel, o nome da varivel que vai ser incrementada. inicio, o valor de inicio da varivel que ser incrementada. incremento, nmero que ser somado a cada incrementao. fim, a repetio ir acabar quando o valor da varivel atingir este valor. comando, um comando que ser repetido. [parmetro], o parmetro do comando que ser repetido. Por exemplo: CODE @ECHO OFF FOR /L %%a IN (1,1,5) DO ECHO O valor de A %%a PAUSE Faz uma pausa e s volta quando o usurio apertar alguma tecla do teclado. REM [comentrio] Este comando no faz absolutamente nada. Ele utilizado para inserir comentarios nos arquivos.

CODE PROMPT ->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 verso do sistema $n = mostrar unidade atual $h = retroceso. Apaga o caracter previo $e = esc. Mostra o sinal corresponde a asci 27 Por isso se colocarmos prompt $p$g o cursor mostra a tragetria de onde estamos e logo o separador. possvel o texto ( por exemplo prompt Meu_nome $p$g DATE Ver/por a data do sistema TIME Ver/por a hora do sistema VER[/font] Verso do sistema [font=Verdana]VOL unidade Volume da unidade especificada MEM parametros Mostra a memoria usada e livre no sistema /p -> mostra por programas /d -> por programas econtroladores /c -> classifica por tamanho Comandos de manejos de arquivos COPY origem destino Serve para copiar arquivos de um lugar a outro. A origem deve ser um trajeto completo de onde esto os arquivos a copiar. Se se omite se entende no diretrio atual. O destino deve ser uma trajetria completa de onde desejar o/os arquivo(s) copy meuarquivo.txt c:\ (copi-lo do diretorio raz 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 extenso txt a unidade A) copy *.txt c:\meusdo~1 (copiar todos os que tenham a extenso txt ao diretrio Meus documentos ( cujo o nome curto meusdoc~1). DEL arquivo(s) Apagar arquivos selecionados

del lol.txt (apaga o arquivo lol.txt no diretrio 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 diretrio Arquivos de programa cujo nome curto arquiv~1( no se apaga as subpastas) DELTREE arquivo(s) -y Apaga a raz especificada ( se um arquivo coloca o arquivo, se uma pasta coloca a pasta com todas as subpastas que incluam). Com o parametro -y no pergunta cada vez Este comando na realidade no um comando sim uma utilidade includa no ms-dos. DIR trajeto Mostra uma lista do contedo do diretrio especificado no trajeto. Se no especificado nada, se entende o atual. Se coloca como parametro /W mostra uma lista resumida Se coloca como parametro /P mostra uma lista utilizando o filtro more. ATTRIB arquivo(s)-> Mostra os arquivos dos diretrios indicados e nesse caso permite mud-los. os atributos so: H -> oculto. Se ativa com +h e desativa com -h R -> Leitura. Apenas leitura com +r, normal com -r S -> Sistema. Se ativa com +s e desativa com -s A -> Modificado. Para copias de segurana incrementadas. +a indica modificado e -a indica no modificado. Attrib arquivostorm.txt (mostrar os atributos do arquivostorm.txt) attrib *.exe +r +r +s (coloca todos os arquivos com extenso exe como ocultos, do sistema e a apenas l) RENAME o REN nome1 nome2 Mudar o nome do arquivo Ren nome1.txt nome2.txt TYPE arquiivo Mostra por pasta o contedo do arquivo; type nomedoarquivo.txt * Todos aqui listados so 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 tambm entram nesta lista incluindo chamadas de outros programas para este sistema. Comandos para programao EDIT arquivo Editor de textos utilizado para editar scripts e arquivos de texto. DEBUG arquivo parametros de arquivo Inicia o desassembler com o programa indicado que se colocam por parametros.

CHOICE texto opes Se utiliza em programas bat para dar elegir a um usuario entre um conjunto de opes A resposta se devolve mediante a varivel errorlevel choice Eleja uma opao snc CODE if errorlevel 1 goto if errorlevel 2 goto if errorlevel 3 goto Este exemplo mostra a lateral eleja uma opo e da a elejer s (sim), n (no) o C (continuar) por exemplo as tres seguintes linhas especificam aonde deve sair o fluxo do programa seguido da tecla pulsada. Variveis A condio DEFINED verifica se uma varivel j foi definida. Por exemplo, se a varivel x estiver definida, ento o resultado ser positivo, seno negativo. Veja como ficaria: CODE @ECHO OFF IF DEFINED x ( ECHO Positivo ) ELSE ( ECHO Negativo ) Arquivos A condio EXIST verifica se existe algum arquivo. Por exemplo, se existir o arquivo exemplo.bat o resultado ser positivo, seno negativo. Veja como ficaria: CODE @ECHO OFF IF EXIST exemplo.bat ( ECHO Positivo ) ELSE ( ECHO Negativo ) Esta condio no 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 no sabe. Por exemplo, se existir algum arquivo com a extenso .bat na pasta atual o resultado ser positivo, seno negativo. Veja como ficaria: CODE @ECHO OFF IF EXIST *.bat (ECHO Positivo ) ELSE ( ECHO Negativo ) X igual a 6? @ECHO OFF CLS SET X=6 IF %X% == 6 GOTO ok ECHO X no igual a 6, X igua a %X% GOTO saida k

ECHO X igual a 6 :saida Na primeira linha. O @ indica que no 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 (no falar nada sem eu mandar), pois se ECHO faz o computador falar, ECHO OFF faz o computador desligar a boca e com o @ no comeo da linha, ele nem vai informar ao usurio 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 varivel X=6. Na quarta linha, uma linha condicional. Se X for igual 6 v para ok. Na quinta linha, bivio que X no vai ser igual a 6, ento o MS-DOS vai falar X no 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 stima linha, est sendo definido o ponto ok, aquele ponto citado na quarta linha. Na oitava linha, X ser igua a 6, ento 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, ento o MS-DOS entende que o batch concluiu. Faa o teste 1. Abra o Bloco de notas do Windows; 2. Copie o exemplo acima e cole nele 3. 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 nmero); 6. Execute e veja o que acontece. Programando; Existe uma infinidade de comandos, como mostrei acima, e s usar a imaginao e podemos programar uma imensido de finalidades, basta usar a criatividade e alguns comandos, para fechar esse tutorial, vou abordar alguns cdigos feito por mim. Exemplo 1 (Bsico) -fazer um loop que pegue todos os nomes dos diretorios -dentro de cada diretorio, renomear todos os arquivos com a extenso .txt para .zip CODE @echo off rem *.txt *.zip @exit Exemplo 2 (Intermedirio/Avanado) CODE @echo off cls Echo Batch feito por Storm Echo .

Echo . Echo Comear o programa? pause Echo . Echo . Echo . Echo Este programa cria uma chave de inicializaao de um arquivo no windows atravs 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 opao: if %choice%==2 goto op2 if %choice%==1 goto op1 rem Bloco de declaraao dos gotos p1 reg add hklm\Software\Microsoft\Windows\CurrentVersion\Run /v teste2 /t REG_SZ /d c:\path\batstorm.bat&goto proximo p2 exit :proximo Echo . Echo . Echo Chave criada com sucesso. Echo . Echo . Echo Agora mostrarei a chamada de um outro arquivo bat sem a interrupo 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 opao: if %choice%==2 goto op3 if %choice%==1 goto op4 p3 call batstorm.bat&goto proximo2 p4 exit

Dicas de Programao BATch


1. Como reiniciar o computador atravs de um programa em BATch ? 2. Inserindo Data e Hora nos seus programas 3. Combinando arquivos em um 4. Formatando um disco sem que o DOS faa perguntas 5. Como saber o Errorlevel e mostr-lo na tela ? 6. Como criar um Menu eficiente ? 7. Como saber se algum programa est na memria, como o ANSI.SYS ? 8. Como voltar para o drive e diretrio inicial ? 9. FOR..IN..DO 10. Sem variveis livres 11. Como fazer se eu precisar usar um PATH maior do que 128 caracteres ? 12. Como no mostrar uma mensagem padro de um programa ? 13. Qual a diferenc entre REM e :: ? 14. Como saber se existe um determinado arquivo no drive ? 15. Livros sobre programao BATch (em ingls)

Como reiniciar o computador atravs de um programa em BATch ?


apenas digite a linha de comando abaixo e o arquivo REBOOT.COM ser criado, ao rod-lo, o computador ser reiniciado. ECHO HPS(ALT+203)>REBOOT.COM ou digite esta linha em um programa BATch ECHO G=FFFF:0 | DEBUG >NUL

Inserindo Data e Hora nos seus programas


H vrios programinhas que possibilitam a insero da data e hora, como: P2E, GET25, BATCHMAN & STRINGS mas tambm existe uma soluo pura do Ms-DOS: @echo off echo @prompt SET TIME$Q$T$_SET DATE$Q$D >TEMP$TMP.BAT

command /c TEMP$TMP.BAT > TEMP$$MP.BAT call TEMP$$MP>BAT >nul del TEMP$?MP.BAT echo. echo A Data De Hoje : %date% echo A Hora Agora : %time% echo. set date= set time=

Combinando arquivos em um
O comando COPY do DOS pode ser usado: COPY *.TXT ALL.XXX RENAME ALL.XXX ALL.TXT ou FOR %%f IN (*.TXT) DO TYPE %%f>>ALL.XXX RENAME ALL.XXX ALL.TXT A renomeao necessria

Formatando um disco sem que o DOS faa perguntas


Com o MS-DOS 4.0+ use FORMAT A: /AUTOTEST ou echo n>temp.tmp echo n>>temp.tmp Format a: /q /v:DISCO>log.txt<temp.tmp Deste modo o disco ser formatado e nada aparecer na tela.

Como saber o Errorlevel e mostr-lo na tela ?


FOR %%E IN (0,1,2) DO IF ERRORLEVEL %%E00 SET ERLVL=%%E IF "%ERLVL%"=="0" SET ERLVL= SET RANGE=0,1,2,3,4,5,6,7,8,9 IF "%ERLVL%"=="2" SET RANGE=0,1,2,3,4,5 FOR %%E IN (%RANGE%) DO IF ERRORLEVEL %ERLVL%%%E0 SET ERLVL=%ERLVL%%%E IF "%ERLVL%"=="0" SET ERLVL= IF NOT "%ERLVL%"=="25" SET RANGE=0,1,2,3,4,5,6,7,8,9

FOR %%E IN (%RANGE%) DO IF ERRORLEVEL %ERLVL%%%E SET ERLVL=%ERLVL%%%E SET RANGE= ECHO O Errorlevel eh %ERLVL%

Como criar um Menu eficiente ?


echo. echo 1 - Rodar Programa 1 echo 2 - Rodar Programa 2 echo 3 - Sair echo. choice /c:123 if errorlevel 3 goto end if errorlevel 2 goto prog2 if errorlevel 1 goto prog1 :prog1 cd\prog1 prog.exe goto end :prog2 cd\prog2 prog2.exe :end

Como saber se algum programa est na memria, como o ANSI.SYS ?


@echo off ----if %1'==' goto syntax mem /c|find /i "%1">temp.tmp copy /b temp.tmp+,, >nul if exist temp.tmp echo Programa: %1 foi encontrado na memria. if not exist temp.tmp echo Programa: %1 no est na memria.

if exist temp.tmp del temp.tmp goto end :syntax echo Use: %0 [nome do programa] echo Exemplo: %0 mouse :end

Como voltar para o drive e diretrio inicial ?


@echo @prompt SET OLDRV$Q$N$_SET OLDIR$Q$P >TEMP$TMP.BAT @command /c TEMP$TMP.BAT > TEMP$$MP.BAT @call TEMP$$MP>BAT >nul @del TEMP$?MP.BAT Quando este programa for executado, %OLDRV% ser o drive de onde o programa foi executado e %OLDIR% ser o diretrio.

FOR..IN..DO
O comando FOR..IN..DO pode ser usado tanto em arquivos BATch onde deve-se usar %%F (dois sinais de porcentagem e uma varivel) ou no prompt onde apenas um sinal de porcentagem necessrio, simplificadamente, o programa faz o seguinte: "Com cada um destes, faa aquilo." Como na maioria dos programas do DOS, basta pensar um pouco e voc poder fazer coisas complexas com este comando, mas em sua forma mais simples, voc poderia trocar o DIR /B por FOR %F IN (*.*) DO ECHO %F (Voc precisar trocar o %F por %%F se usado em um arquivo BATch) O %F ou %%F apenas um varivel temporria que s ativada enquanto o comando FOR..IN..DO est sendo executado, a letra usada "F" no tem nenhum significado, poderia ser qualquer outra Voc poderia por exemplo usar o comando FOR..IN..DO para rodar todos os seus programas BATch: FOR %B IN (*.BAT) DO CALL %B

Sem variveis livres


As variveis so aquelas com o sinal de porcentagem, como o %PATH% e %PROMPT% e voc pode precisar aumentar o seu tamanho para poder rodar algum programa em BATch que crias suas prprias variveis. Voc pode aumentar o tamanho das variveis usando o parmetro /E no comando SHELL do CONFIG.SYS: SHELL=C:\DOS\COMMAND.COM C:\DOS /E:2048 /P ou voc pode fazer um ajuste temporrio para o arquivo BAT %COMSPEC% /E:2048 /C ARQUIVO.BAT

Como fazer se eu precisar usar um PATH maior do que 128 caracteres ?


uma das alternativas usar o comando SUBST, como mostra o exemplo abaixo SUBST K: C:\WINDOWS e ao invs de digitar C:\WINDOWS no Path, digite apenas K:

Como no mostrar uma mensagem padro de um programa ?


Basta usar os comandos de redirecionamente do DOS, o sinal de maior (>), por exemplo: "Como fazer para no receber a mensagem padro do comando PAUSE ?" apenas digite : Pause>NUL e a mensagem "Pressione qualquer tecla para continuar..." no aparecer na tela, mas caso voc queira armazenar essa mensagem em um arquivo basta trocar o >NUL por >arquivo.txt

Qual a diferenc entre REM e :: ?


A diferena entre REM e :: que usando o comando REM, o DOS ler toda a linha antes de no execut-la, e usando o ::, o DOS ler apenas os :: ignorando o resto da linha, com isto seu programa ficar mais rpido.

Como saber se existe um determinado arquivo no drive ?

CD\ DIR /B /S|FIND /i "filename.ext">FLAG.$$$ COPY /B FLAG.$$$+,, IF EXIST FLAG.$$$ ECHO filename.ext foi encontrado IF NOT EXIST FLAG.$$$ ECHO filename.ext no foi encontrado.

Livros sobre programao BATch (em ingls)


DOS Power Tools por Paul Somerson Supercharging MS-DOS por Van Wolverton MS-DOS Batch File Programming por Ronny Richardson Advanced MS-DOS Batch File Programming por Dan Gookin Concise Guide to MS-DOS Batch Files por Kris Jamsa

Aprenda a programar em .bat


12/01/2011 10:11 5 COMENTRIOS

Compartilhe este artigo TWITTER FACEBOOK DELICIOUS DIGG STUMBLE REDDIT Autor:

Alberto
Tags:
.bat

Introduo Antes de tudo, indicar o porqu os processos so chamados batch. A razo por ele se chamar bat porque no ms-dos requere-se como mximo trs letras na extenso e por tanto os arquivos tem a extenso .bat O que se pode fazer com eles? Pode fazer de forma automatizada tudo aquilo que se pode fazer no console do ms-dos. Como faa 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 notao de nomes prprios do ms-dos. Este nome com no mximo 8 letras (espao e \ no so permitidos) logo um ponto e a extenso que neste caso obrigatoriamente bat. Como posso selecionar vrios arquivos; Para ele tem que se levar em conta os nomes dos arquivos, devem cumprir a notao do ms-dos (8 letras sem espao como mximo, logo um ponto e trs letras como mximo da extenso. Pode se utilizar os comandos; *Equivale a vrios caracteres. ?Equivale a apenas um caracter. Exemplos comando *.doc -> selecionar todos os arquivos que tenham a extenso doc. comando a*.doc -> selecionar todos os arquivos que comecem por a e tenha a extenso doc. comando a*b.doc -> selecionar todos os arquivos que comecem por a, acabem por b e tenham a

extenso doc. comando *mao*.doc -> selecionar todos os arquivos que contenham mao e tenham a extenso doc. comando c?mao.doc -> selecionar todos os arquivos que contenham c, logo um carater qualquer e logo mao. Deve ter tambem a extenso doc. comando c?b*.* -> selecionar todos os arquivos que comecem por c, tenham um caracter qualquer, logo um b e qualquer extenso. comando *.b?t -> selecionar todos os arquivos que tenham a extenso que comece por b, logo um caracter qualquer e logo um t. Quem so as trajetrias e os patchs; A trajetria o nome completo de um arquivo e indica a situao 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 diretrio atual. Se digo c:\arquivo.txt indico que o arquivo que me interesse se chama arquivo.txt e se encontra no diretrio riz de C. Dado que no ms-dos nao se admite nomes grandes ( mais de 8 letras ) nem espao, 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 carcteres vlidos do nome, logo o sinal ~ (alt 126) e logo um nmero. Que comandos podemos utilizar; Comandos; Aqui esto alguns comandos utilizados em batch. ECHO [mensagem ou varivel] Escreve na tela ECHO OFF Desativa as informaes e confirmaes feitas pelo sistema. Como C:>, Tem certeza que deseja fazer tal?. ECHO ON Ativa as informaes e confirmaes do sistema. ECHO. Pula uma linha SET variavel=valor Cria ou modifica uma varivel (espao reservado temporariamente na memria RAM para guardar algumas informaes nmericas, de caractres, positivo/negativo entre outros. No podem ter acento e devem comear com letra). Para chamar a varivel posteriormente basta coloca-la entre %. Por exemplo: SET nome=Storm ECHO O nome dele %nome% :nomedolink

Nomeia um ponto do arquivo de lote permitindo avanar ou voltar a execuo apartir daquele ponto. CLS Esse comando limpa toda a tela. CLear Screen. @[Comando] Desativa as informaes e confirmaes feitas pelo sistema apenas para esta linha. CODE IF [condio] ( [ao] ) ELSE ( [ao2] ) Esse um comando condicional. Se condio faa ao, seno faa ao2. Por exemplo: CODE @ECHO OFF SET nome=Storm IF %nome%==Storm ( ECHO Ola Storm! ) ELSE ( ECHO Ola %nome%! ) GOTO [ponto] Avana ou volta a execuo para um ponto do arquivo de lote. FOR /L %%variavel IN (inicio,incremento,fim) DO comando [parmetro] Repete um comando varias vezes fazendo incrementaes at o fim ser atingido. /L, uma opo do comando FOR que faz as incrementaes. %%variavel, o nome da varivel que vai ser incrementada. inicio, o valor de inicio da varivel que ser incrementada. incremento, nmero que ser somado a cada incrementao. fim, a repetio ir acabar quando o valor da varivel atingir este valor. comando, um comando que ser repetido. [parmetro], o parmetro do comando que ser repetido. Por exemplo: CODE @ECHO OFF FOR /L %%a IN (1,1,5) DO ECHO O valor de A %%a PAUSE Faz uma pausa e s volta quando o usurio apertar alguma tecla do teclado. REM [comentrio] Este comando no faz absolutamente nada. Ele utilizado para inserir comentarios nos arquivos. CODE PROMPT ->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 verso do sistema $n = mostrar unidade atual $h = retroceso. Apaga o caracter previo $e = esc. Mostra o sinal corresponde a asci 27 Por isso se colocarmos prompt $p$g o cursor mostra a tragetria de onde estamos e logo o separador. possvel o texto ( por exemplo prompt Meu_nome $p$g DATE Ver/por a data do sistema TIME Ver/por a hora do sistema VER[/font] Verso do sistema [font=Verdana]VOL unidade Volume da unidade especificada MEM parametros Mostra a memoria usada e livre no sistema /p -> mostra por programas /d -> por programas econtroladores /c -> classifica por tamanho Comandos de manejos de arquivos COPY origem destino Serve para copiar arquivos de um lugar a outro. A origem deve ser um trajeto completo de onde esto os arquivos a copiar. Se se omite se entende no diretrio atual. O destino deve ser uma trajetria completa de onde desejar o/os arquivo(s) copy meuarquivo.txt c:\ (copi-lo do diretorio raz 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 extenso txt a unidade A) copy *.txt c:\meusdo~1 (copiar todos os que tenham a extenso txt ao diretrio Meus documentos ( cujo o nome curto meusdoc~1). DEL arquivo(s) Apagar arquivos selecionados del lol.txt (apaga o arquivo lol.txt no diretrio 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 diretrio Arquivos de programa cujo nome curto arquiv~1( no se apaga as subpastas) DELTREE arquivo(s) -y Apaga a raz especificada ( se um arquivo coloca o arquivo, se uma pasta coloca a pasta com todas as subpastas que incluam). Com o parametro -y no pergunta cada vez Este comando na realidade no um comando sim uma utilidade includa no ms-dos. DIR trajeto Mostra uma lista do contedo do diretrio especificado no trajeto. Se no especificado nada, se entende o atual. Se coloca como parametro /W mostra uma lista resumida Se coloca como parametro /P mostra uma lista utilizando o filtro more. ATTRIB arquivo(s)-> Mostra os arquivos dos diretrios indicados e nesse caso permite mud-los. os atributos so:

H -> oculto. Se ativa com +h e desativa com -h R -> Leitura. Apenas leitura com +r, normal com -r S -> Sistema. Se ativa com +s e desativa com -s A -> Modificado. Para copias de segurana incrementadas. +a indica modificado e -a indica no modificado. Attrib arquivostorm.txt (mostrar os atributos do arquivostorm.txt) attrib *.exe +r +r +s (coloca todos os arquivos com extenso exe como ocultos, do sistema e a apenas l) RENAME o REN nome1 nome2 Mudar o nome do arquivo Ren nome1.txt nome2.txt TYPE arquiivo Mostra por pasta o contedo do arquivo; type nomedoarquivo.txt * Todos aqui listados so 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 tambm entram nesta lista incluindo chamadas de outros programas para este sistema. Comandos para programao EDIT arquivo Editor de textos utilizado para editar scripts e arquivos de texto. DEBUG arquivo parametros de arquivo Inicia o desassembler com o programa indicado que se colocam por parametros. CHOICE texto opes Se utiliza em programas bat para dar elegir a um usuario entre um conjunto de opes A resposta se devolve mediante a varivel errorlevel choice Eleja uma opao snc CODE if errorlevel 1 goto if errorlevel 2 goto if errorlevel 3 goto Este exemplo mostra a lateral eleja uma opo e da a elejer s (sim), n (no) o C (continuar) por exemplo as tres seguintes linhas especificam aonde deve sair o fluxo do programa seguido da tecla pulsada. Variveis A condio DEFINED verifica se uma varivel j foi definida. Por exemplo, se a varivel x estiver definida, ento o resultado ser positivo, seno negativo. Veja como ficaria: CODE @ECHO OFF IF DEFINED x ( ECHO Positivo ) ELSE ( ECHO Negativo ) Arquivos A condio EXIST verifica se existe algum arquivo. Por exemplo, se existir o arquivo exemplo.bat o resultado ser positivo, seno negativo. Veja como ficaria: CODE @ECHO OFF IF EXIST exemplo.bat ( ECHO Positivo ) ELSE ( ECHO Negativo )

Esta condio no 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 no sabe. Por exemplo, se existir algum arquivo com a extenso .bat na pasta atual o resultado ser positivo, seno negativo. Veja como ficaria: CODE @ECHO OFF IF EXIST *.bat (ECHO Positivo ) ELSE ( ECHO Negativo ) X igual a 6? @ECHO OFF CLS SET X=6 IF %X% == 6 GOTO ok ECHO X no igual a 6, X igua a %X% GOTO saida :o k ECHO X igual a 6 :saida Na primeira linha. O @ indica que no 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 (no falar nada sem eu mandar), pois se ECHO faz o computador falar, ECHO OFF faz o computador desligar a boca e com o @ no comeo da linha, ele nem vai informar ao usurio 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 varivel X=6. Na quarta linha, uma linha condicional. Se X for igual 6 v para ok. Na quinta linha, bivio que X no vai ser igual a 6, ento o MS-DOS vai falar X no 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 stima linha, est sendo definido o ponto ok, aquele ponto citado na quarta linha. Na oitava linha, X ser igua a 6, ento 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, ento o MS-DOS entende que o batch concluiu. Faa o teste 1. Abra o Bloco de notas do Windows; 2. Copie o exemplo acima e cole nele 3. 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 nmero); 6. Execute e veja o que acontece. Programando; Existe uma infinidade de comandos, como mostrei acima, e s usar a imaginao e podemos programar uma imensido de finalidades, basta usar a criatividade e alguns comandos, para fechar esse tutorial, vou abordar alguns cdigos feito por mim. Exemplo 1 (Bsico) -fazer um loop que pegue todos os nomes dos diretorios -dentro de cada diretorio, renomear todos os arquivos com a extenso .txt para .zip CODE @echo off rem *.txt *.zip @exit Exemplo 2 (Intermedirio/Avanado)

CODE @echo off cls Echo Batch feito por Storm Echo . Echo . Echo Comear o programa? pause Echo . Echo . Echo . Echo Este programa cria uma chave de inicializaao de um arquivo no windows atravs 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 opao: if %choice%==2 goto op2 if %choice%==1 goto op1 rem Bloco de declaraao dos gotos p1 reg add hklm\Software\Microsoft\Windows\CurrentVersion\Run /v teste2 /t REG_SZ /d c:\path\batstorm.bat&goto proximo p2 exit :proximo Echo . Echo . Echo Chave criada com sucesso. Echo . Echo . Echo Agora mostrarei a chamada de um outro arquivo bat sem a interrupo 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 opao: if %choice%==2 goto op3 if %choice%==1 goto op4 p3 call batstorm.bat&goto proximo2 p4 exit

o que voc deve estar procurando o comando "echo" porm, certifique-se de que no comeo do arquivo voc set essa instruao: "@echo off" assim, os comandos a serem executados pelo processamento em lote nao serao exibidos, apenas as respostas... verificando o seu problema voc poderia fazer assim: @echo off cls echo Como voc vai? echo [1] Vou bem echo [2] Vou pessimo set /p opcao=Digite a opcao: IF %opcao% equ 2 (goto dig2) IF %opcao% equ 1 (goto dig1) ELSE (goto Fim) :dig2 echo Que triste goto fim :dig1 echo Que legal :Fim pause

Você também pode gostar