Translate

Quanto já ganhei

Mostrando postagens com marcador DOS. Mostrar todas as postagens
Mostrando postagens com marcador DOS. Mostrar todas as postagens

domingo, 29 de setembro de 2013

Comandos DOS e arquivos .bat (Parte 5) – Cadastro de Pessoas

OBS.: 1) É altamente recomendado, para melhor aprendizagem, que ao invés de copiar e colar, digite todo conteúdo dos exemplos, dessa forma terá maior fixação dos comandos e sintaxe dos mesmos.
2) Todos os testes dos exemplos foram realizados utilizando como sistema operacional o Windows 8, o que não significa que só funcionará no mesmo.


Atualizado em 08/01/2017  - Inserido a funcionalidade de editar cadastro.



Depois do Blog Cabeça Nerd desenvolver o programa NIVER, tiveram leitores pedindo-nos um programa para cadastro de pessoas. Lembro que para tal procedimento seria necessário uma linguagem de programação mais robusta. Entretanto, aceitei o desafio e fiz usando apenas comandos do MS-DOS através de arquivo em lote. Agradeço a participação e incentivos de todos, abaixo, segue o programa.


Nesse programa você poderá cadastrar:

  • Nome;
  • Endereço (rua, numero, complemento e CEP);
  • Telefone/fax;
  • Celular;
  • CPF e RG;
  • Sexo;
  • Estado civil;
  • e-mail e ainda colocar uma observação.


Poderá também consultar os dados cadastrados e excluí-los posteriormente. Esse é um típico programa onde se trabalha muito com strings (conjunto de caractere) e isso é bastante complicado em arquivos em lote. Sendo assim, os mais observadores poderão encontrar algumas limitações do programa, algo que peço que desconsiderem dadas as restrições dos comandos do MS-DOS. Obviamente, estarei disposto a receber opiniões, assim, ajudaremos todos.




  1. @echo Off
  2. mode con cols=60 lines=30

  3. :menuPrin
  4. rem ###Mostra Menu inicial.###
  5. Title Cadastro de Pessoas - Menu Principal
  6. cls
  7.  echo  Cadastro de Pessoas
  8. echo.
  9. echo  O que deseja fazer?
  10. echo.
  11. echo.
  12. echo                 1-Cadastrar
  13. echo                 2-Apagar
  14. echo                 3-Pesquisa
  15. echo                 4-Editar
  16. echo                 5-Desenvolvedor
  17. echo                 6-Sair
  18. echo.
  19. echo.
  20. set /p "op=Escolha uma opcao: "
  21. rem ###Validacao para aceitar apenas os valores pre determinados###

  22. if %op% LSS 1 (
  23. echo.
  24. echo ESCOLHA INCORRETA!
  25. echo.
  26. pause
  27. goto menuPrin
  28. )
  29. if %op% GTR 5 (
  30. echo.
  31. echo ESCOLHA INCORRETA!
  32. echo.
  33. pause
  34. goto menuPrin
  35. )
  36. rem ###Fim da validacao para aceitar apenas os valores pre determinados###

  37. if NOT exist codigo.cadp echo 0 > codigo.cadp
  38. rem ###Nesta linha 39 Caso nao exista o arquivo para
  39. rem gravacao e leitura do ultimo codigo cadastrado
  40. rem sera criado o arquivo com codigo zero "0" .###

  41. if %op%==1 set operacao=Cadastrar
  42. if %op%==2 set operacao=Apagar
  43. if %op%==3 set operacao=Pesquisar
  44. if %op%==4 set operacao=Editar
  45. if %op%==5 set operacao=Desenvolvedor
  46. if %op%==6 exit

  47. rem ###Cabecalho que sera usado para Cadastrar, Apagar, Pesquisar e Desenvolvedor###.
  48. :tipoOperacao
  49. Title Cadastro de Pessoas - %operacao%
  50. cls
  51. echo  Cadastro de Pessoas - Operacao escolhido: %operacao%
  52. echo.
  53. echo.

  54. if %op%==1 goto Cadastrar
  55. if %op%==2 goto Apagar
  56. if %op%==3 goto Pesquisa
  57. if %op%==4 goto Editar
  58. if %op%==5 goto Desenvolvedor
  59. rem ###Fim do cabecalho###

  60. :menuEscolha
  61. cls
  62. echo  Cadastro de Pessoas
  63. echo.
  64. echo.
  65. echo         C-Continuar a %operacao%
  66. echo         M-Menu Principal
  67. echo         S-Sair
  68. echo.
  69. echo.
  70. set /p "escolha=Escolha uma opcao: "
  71. if /I %escolha%==C goto tipoOperacao
  72. if /I %escolha%==M goto menuPrin
  73. if /I %escolha%==S exit

  74. :Cadastrar
  75. set operacao=Cadastrar
  76. set cod=type codigo.cadp

  77. echo Ultimo Codigo Cadastrado
  78. %cod%

  79. rem ###Obtendo dadas para a gravacao###.
  80. echo.
  81. echo.
  82. set /p "codigo=Codigo: "
  83. echo.
  84. set /p "nome=Nome: "
  85. echo.
  86. set /p "endereco=Endereco: "
  87. set /p "numero=Numero: "
  88. set /p "complemento=Complemento: "
  89. set /p "cep=CEP: "
  90. echo.
  91. set /p "telefoneFax=Telefone/Fax: "
  92. set /p "celular=Celular: "
  93. echo.
  94. set /p "cpf=CPF: "
  95. set /p "rg=RG: "
  96. set /p "sexo=Sexo: "
  97. set /p "estadoCivil=Estado Civil: "
  98. echo.
  99. set /p "email=E-mail: "
  100. echo.
  101. set /p "Observacao=Observacao: "
  102. rem ###Fim da obtencao dos dadas.###

  103. rem ###Gravando os dados###
  104. echo %codigo%__NOME: %nome% >> cadastros.cadp
  105. echo %codigo%__ENDERECO: %endereco% >> cadastros.cadp
  106. echo %codigo%__NUMERO: %numero% >> cadastros.cadp
  107. echo %codigo%__COMPLEMENTO: %complemento% >> cadastros.cadp
  108. echo %codigo%__CEP: %cep% >> cadastros.cadp
  109. echo %codigo%__TELEFONE/FAX: %telefoneFax% >> cadastros.cadp
  110. echo %codigo%__CELULAR: %celular% >> cadastros.cadp
  111. echo %codigo%__CPF: %cpf% >> cadastros.cadp
  112. echo %codigo%__RG: %rg% >> cadastros.cadp
  113. echo %codigo%__SEXO: %sexo% >> cadastros.cadp
  114. echo %codigo%__ESTADO CIVIL: %estadoCivil% >> cadastros.cadp
  115. echo %codigo%__E-MAIL: %email% >> cadastros.cadp
  116. echo %codigo%__OBSERVACAO: %observacao% >> cadastros.cadp
  117. echo. %codigo% > codigo.cadp
  118. rem ###Fim da gravacao dos dados###
  119. goto menuEscolha

  120. :Apagar
  121. set cod=type codigo.cadp
  122. echo Ultimo Codigo Cadastrado
  123. %cod%
  124. echo.
  125. echo.

  126. set operacao=Apagar
  127. set /p "apagar=Codigo que deseja apagar: "
  128. find /I /V "%apagar%__" cadastros.cadp > cadastros2.cadp
  129. echo.
  130. echo.
  131. pause
  132. del cadastros.cadp
  133. rename cadastros2.cadp cadastros.cadp
  134. find /I /V "cadastros.cadp" cadastros.cadp > cadastros2.cadp
  135. del cadastros.cadp
  136. rename cadastros2.cadp cadastros.cadp
  137. goto menuEscolha

  138. :Pesquisa
  139. set cod=type codigo.cadp
  140. echo Ultimo Codigo Cadastrado
  141. %cod%
  142. echo.
  143. echo.
  144. set /P "codigoPesq=Codigo para pesquisar: "
  145. if exist cadastros.cadp find /I "%codigoPesq%__" cadastros.cadp
  146. echo.
  147. pause
  148. set operacao=Pesquisar
  149. goto menuEscolha

  150. :Editar
  151. set cod=type codigo.cadp
  152. echo Ultimo Codigo Cadastrado
  153. %cod%
  154. echo.
  155. echo.
  156. set /P "codigoEdit=Codigo para editar: "
  157. find /I /V "%codigoEdit%__" cadastros.cadp > cadastros2.cadp
  158. echo.
  159. echo               ------ INSTRUCAO ------
  160. echo.
  161. echo.
  162. echo   Para os campos que nao deseja editar, deixar em branco.
  163. echo.
  164. echo.
  165. echo.
  166. pause
  167. cls
  168. echo Dados atuais:
  169. find /I "%codigoEdit%__" cadastros.cadp
  170. echo.
  171. echo.
  172. echo Novos dados:
  173. echo.
  174. echo.
  175. rem ###Obtendo dadas para a gravacao###.
  176. echo.
  177. echo.
  178. rem Zera a variavel###
  179. set nome=
  180. set /p "nome=Nome: "
  181. echo.
  182. set endereco=
  183. set /p "endereco=Endereco: "
  184. set numero=
  185. set /p "numero=Numero: "
  186. set complemento=
  187. set /p "complemento=Complemento: "
  188. set cep=
  189. set /p "cep=CEP: "
  190. echo.
  191. set telefoneFax=
  192. set /p "telefoneFax=Telefone/Fax: "
  193. set celular=
  194. set /p "celular=Celular: "
  195. echo.
  196. set cpf=
  197. set /p "cpf=CPF: "
  198. set rg=
  199. set /p "rg=RG: "
  200. set sexo=
  201. set /p "sexo=Sexo: "
  202. set estadoCivil=
  203. set /p "estadoCivil=Estado Civil: "
  204. echo.
  205. set email=
  206. set /p "email=E-mail: "
  207. echo.
  208. set observacao=
  209. set /p "observacao=Observacao: "
  210. rem ###Fim da obtencao dos dados.###

  211. rem ###Gravando os dados###
  212. if "%nome%"=="" (
  213. find /I "%codigoEdit%__NOME:" cadastros.cadp >> cadastros2.cadp
  214. ) else (
  215. echo %codigoEdit%__NOME: %nome% >> cadastros2.cadp
  216. )

  217. if "%endereco%"=="" (
  218. find /I "%codigoEdit%__ENDERECO:" cadastros.cadp >> cadastros2.cadp
  219. ) else (
  220. echo %codigoEdit%__ENDERECO: %endereco% >> cadastros2.cadp
  221. )

  222.  if "%numero%"=="" (
  223.  find /I "%codigoEdit%__NUMERO:" cadastros.cadp >> cadastros2.cadp
  224.  ) else (
  225.  echo %codigoEdit%__NUMERO: %numero% >> cadastros2.cadp
  226. )

  227.  if "%complemento%"=="" (
  228.  find /I "%codigoEdit%__COMPLEMENTO:" cadastros.cadp >> cadastros2.cadp
  229.  ) else (
  230. echo %codigoEdit%__COMPLEMENTO: %complemento% >> cadastros2.cadp
  231. )

  232. if "%cep%"=="" (
  233. find /I "%codigoEdit%__CEP:" cadastros.cadp >> cadastros2.cadp
  234. ) else (
  235.  echo %codigoEdit%__CEP: %cep% >> cadastros2.cadp
  236. )

  237. if "%telefoneFax%"=="" (
  238. find /I "%codigoEdit%__TELEFONE/FAX:" cadastros.cadp >> cadastros2.cadp
  239. ) else (
  240. echo %codigoEdit%__TELEFONE/FAX: %telefoneFax% >> cadastros2.cadp
  241. )

  242. if "%celular%"=="" (
  243. find /I "%codigoEdit%__CELULAR:" cadastros.cadp >> cadastros2.cadp
  244. ) else (
  245. echo %codigoEdit%__CELULAR: %celular% >> cadastros2.cadp
  246. )

  247. if "%cpf%"=="" (
  248. find /I "%codigoEdit%__CPF:" cadastros.cadp >> cadastros2.cadp
  249. ) else (
  250. echo %codigoEdit%__CPF: %cpf% >> cadastros2.cadp
  251. )

  252. if "%rg%"=="" (
  253. find /I "%codigoEdit%__RG:" cadastros.cadp >> cadastros2.cadp
  254. ) else (
  255. echo %codigoEdit%__RG: %rg% >> cadastros2.cadp
  256. )
  257.  
  258. if "%sexo%"=="" (
  259. find /I "%codigoEdit%__SEXO:" cadastros.cadp >> cadastros2.cadp
  260. ) else (
  261. echo %codigoEdit%__SEXO: %sexo% >> cadastros2.cadp
  262. )
  263.  
  264. if "%estadoCivil%"=="" (
  265. find /I "%codigoEdit%__ESTADO CIVIL:" cadastros.cadp >> cadastros2.cadp
  266. ) else (
  267. echo %codigoEdit%__ESTADO CIVIL: %estadoCivil% >> cadastros2.cadp
  268. )

  269. if "%email%"=="" ( 
  270. find /I "%codigoEdit%__E-MAIL:" cadastros.cadp >> cadastros2.cadp
  271. ) else (
  272. echo %codigoEdit%__E-MAIL: %email% >> cadastros2.cadp
  273. )
  274.  
  275. if "%observacao%"=="" (
  276. find /I "%codigoEdit%__OBSERVACAO:" cadastros.cadp >> cadastros2.cadp
  277. ) else (
  278. echo %codigoEdit%__OBSERVACAO: %observacao% >> cadastros2.cadp
  279. )
  280. rem ###Fim da gravacao dos dados###
  281.  
  282. del cadastros.cadp
  283. rename cadastros2.cadp cadastros.cadp
  284. find /I /V "cadastros.cadp" cadastros.cadp > cadastros2.cadp
  285. rem retira linhas em branco
  286. type cadastros2.cadp | find " " > cadastros3.cadp
  287. rem retira outras linhas em branco
  288. type cadastros3.cadp | find /V "  " > cadastros4.cadp
  289. del cadastros.cadp
  290. del cadastros2.cadp
  291. del cadastros3.cadp
  292. rename cadastros4.cadp cadastros.cadp
  293. echo.
  294. echo.
  295. pause
  296. set operacao=Editar
  297. goto menuEscolha
  298.  
  299. :Desenvolvedor
  300. echo.
  301. echo.
  302. echo ###########################################################
  303. echo #                                                         #
  304. echo # Cadastro de Pessoas eh um programa livre para cadastrar #
  305. echo # pessoas e seus respectivos dados, produzido por Leomar  #
  306. echo # Ilario como parte dos estudos do MS-DOS com arquivos em #
  307. echo # lote desenvolvido para o Blog Cabeca Nerd.              #
  308. echo #                                                         #
  309. echo #                                                         #
  310. echo # Contato desenvolvedor: blogcabecanerd@gmail.com         #
  311. echo #                                                         #
  312. echo ###########################################################
  313. echo.
  314. echo.
  315. echo.
  316. echo.
  317. echo.
  318. pause
  319. cls
  320. goto menuEscolha
O programa ficará da seguinte forma:





Veja também:

sábado, 21 de setembro de 2013

Comandos DOS e arquivos .bat (Parte 4) – Cadastro de Aniversariantes

OBS.: 1) É altamente recomendado, para melhor aprendizagem, que ao invés de copiar e colar, digite todo conteúdo dos exemplos, dessa forma terá maior fixação dos comandos e sintaxe dos mesmos.
2) Todos os testes dos exemplos foram realizados utilizando como sistema operacional o Windows 8, o que não significa que só funcionará no mesmo.


Vamos desenvolver agora um programa que utilizará arquivos como forma de entrada e saída de dados onde poderemos gravar, apagar, fazer listagens e também pesquisas.



É um programa simples chamado NIVER que mostra como é possível realizar certas tarefas, utilizando apenas comandos do MS-DOS. Nele você poderá cadastrar aniversariantes em seu respectivo mês, onde poderá consultá-los e excluí-los posteriormente.



  1. @echo Off
  2. mode con cols=60 lines=30

  3. :mnuPrin

  4. Title Niver - Menu Principal
  5. cls
  6. echo  Niver
  7. echo.
  8. echo  O que deseja fazer?
  9. echo.
  10. echo.
  11. echo                 1-Cadastrar Aniversariantes
  12. echo                 2-Apagar Aniversariantes
  13. echo                 3-Listagem
  14. echo                 4-Pesquisa
  15. echo                 5-Desenvolvedor
  16. echo                 6-Sair
  17. echo.
  18. echo.
  19. set /p "op=Escolha uma opcao: "

  20. rem validacao para aceitar apenas os valores pre determinados
  21. if %op% LSS 1 (
  22. echo.
  23. echo ESCOLHA INCORRETA!
  24. echo.
  25. pause
  26. goto mnuPrin
  27. )
  28. if %op% GTR 6 (
  29. echo.
  30. echo ESCOLHA INCORRETA!
  31. echo.
  32. pause
  33. goto mnuPrin
  34. )
  35. rem fim da validacao para aceitar apenas os valores pre determinados

  36. if %op%==1 set operacao=Cadastrar
  37. if %op%==2 set operacao=Apagar
  38. if %op%==3 set operacao=Listagem
  39. if %op%==4 goto Pesquisa
  40. if %op%==5 goto desenvolvedor
  41. if %op%==6 exit

  42. :escmes

  43. Title Niver - %operacao%
  44. cls
  45. echo  Niver
  46. echo.
  47. echo  Escolha o mes para %operacao% Aniversariantes:
  48. echo.
  49. echo.
  50. echo         1-Janeiro     5-Maio      9-Setembro
  51. echo         2-Fevereiro   6-Junho    10-Outubro
  52. echo         3-Marco       7-Julho    11-Novembro
  53. echo         4-Abril       8-Agosto   12-Dezembro
  54. echo.
  55. echo         M-Menu Principal
  56. echo         S-Sair
  57. echo.
  58. set /p "mes=Escolha uma opcao: "

  59. if %mes%==1 (
  60. set MesEscolhido=Janeiro
  61. set Arquivo=Jan
  62. goto MesEscolhido
  63. )
  64. if %mes%==2 (
  65. set MesEscolhido=Fevereiro
  66. set Arquivo=Fev
  67. goto MesEscolhido
  68. )
  69. if %mes%==3 (
  70. set MesEscolhido=Marco
  71. set Arquivo=Mar
  72. goto MesEscolhido
  73. )
  74. if %mes%==4 (
  75. set MesEscolhido=Abril
  76. set Arquivo=Abr
  77. goto MesEscolhido
  78. )
  79. if %mes%==5 (
  80. set MesEscolhido=Maio
  81. set Arquivo=Mai
  82. goto MesEscolhido
  83. )
  84. if %mes%==6 (
  85. set MesEscolhido=Junho
  86. set Arquivo=Jun
  87. goto MesEscolhido
  88. )
  89. if %mes%==7 (
  90. set MesEscolhido=Julho
  91. set Arquivo=Jul
  92. goto MesEscolhido
  93. )
  94. if %mes%==8 (
  95. set MesEscolhido=Agosto
  96. set Arquivo=Ago
  97. goto MesEscolhido
  98. )
  99. if %mes%==9 (
  100. set MesEscolhido=Setembro
  101. set Arquivo=Set
  102. goto MesEscolhido
  103. )
  104. if %mes%==10 (
  105. set MesEscolhido=Outubro
  106. set Arquivo=Out
  107. goto MesEscolhido
  108. )
  109. if %mes%==11 (
  110. set MesEscolhido=Novembro
  111. set Arquivo=Nov
  112. goto MesEscolhido
  113. )
  114. if %mes%==12 (
  115. set MesEscolhido=Dezembro
  116. set Arquivo=Dez
  117. goto MesEscolhido
  118. )
  119. if /I %mes%==M goto mnuPrin
  120. if /I %mes%==S exit
  121. rem validacao para aceitar apenas os valores pre determinados
  122. if %mes% LSS 1 (
  123. echo.
  124. echo MES INCORRETO!
  125. echo.
  126. pause
  127. goto escmes
  128. )
  129. if %mes% GTR 12 (
  130. echo.
  131. echo MES INCORRETO!
  132. echo.
  133. pause
  134. goto escmes
  135. )
  136. rem fim da validacao para aceitar apenas os valores pre determinados

  137. rem Cadastrar, Apagar e Pesquizar no mes escolhido.
  138. :MesEscolhido
  139. Title Niver - %operacao% em %MesEscolhido%
  140. cls
  141. echo  Niver
  142. echo.
  143. echo  Mes escolhido: %MesEscolhido%
  144. echo.
  145. echo. 

  146. if %op%==1 goto Cadastrar
  147. if %op%==2 goto Apagar
  148. if %op%==3 goto Listagem

  149. :Cadastrar
  150. set /P "nome=Nome do aniversariante: "
  151. set /P "dia=Dia do aniversario: "
  152. echo Nome: %nome% - Dia: %dia% >> %Arquivo%.niv
  153. goto escmes

  154. :Apagar
  155. set /p "apagar=Nome do aniversariante para apagar: "
  156. find /I /V "%apagar%" %Arquivo%.niv > %Arquivo%2.niv
  157. echo.
  158. echo.
  159. pause
  160. del %Arquivo%.niv
  161. rename %Arquivo%2.niv %Arquivo%.niv
  162. find /I /V "JAN.NIV" %Arquivo%.niv > %Arquivo%2.niv
  163. del %Arquivo%.niv
  164. rename %Arquivo%2.niv %Arquivo%.niv
  165. goto escmes

  166. :Listagem
  167. sort %Arquivo%.niv | more /S
  168. echo.
  169. pause
  170. goto escmes

  171. :Pesquisa
  172. Title Niver - Pesquisa
  173. cls
  174. echo  Niver
  175. echo.
  176. set /P "NomePesq=Nome do aniversariante para pesquisar: "
  177. if exist jan.niv find /I "%NomePesq%" jan.niv
  178. if exist fev.niv find /I "%NomePesq%" fev.niv
  179. if exist mar.niv find /I "%NomePesq%" mar.niv
  180. if exist abr.niv find /I "%NomePesq%" abr.niv
  181. if exist mai.niv find /I "%NomePesq%" mai.niv
  182. if exist jun.niv find /I "%NomePesq%" jun.niv
  183. echo.
  184. pause
  185. cls
  186. echo  Niver
  187. echo.
  188. echo                  CONTINUACAO DA PESQUISA...
  189. echo.
  190. if exist jul.niv find /I "%NomePesq%" jul.niv
  191. if exist ago.niv find /I "%NomePesq%" ago.niv
  192. if exist set.niv find /I "%NomePesq%" set.niv
  193. if exist out.niv find /I "%NomePesq%" out.niv
  194. if exist nov.niv find /I "%NomePesq%" nov.niv
  195. if exist dez.niv find /I "%NomePesq%" dez.niv
  196. echo.
  197. pause
  198. goto mnuPrin

  199. :desenvolvedor

  200. Title Niver - Desenvolvedor
  201. cls
  202. echo  Niver
  203. echo.
  204. echo Niver eh um programa livre para agendar datas de
  205. echo aniversarios, produzida por Leomar Ilario como
  206. echo parte dos estudos do MS-DOS com arquivos em lote
  207. echo desenvolvida para o Blog Cabeca Nerd.
  208. echo.
  209. echo Contato desenvolvedor: blogcabecanerd@gmail.com
  210. echo.
  211. pause
  212. cls
  213. goto mnuPrin


O programa ficará da seguinte forma:




Veja também:

domingo, 21 de julho de 2013

Comandos DOS e arquivos .bat (Parte 3)

Programa Completo (Calculadora)


OBS.: 1) É altamente recomendado, para melhor aprendizagem, que ao invés de copiar e colar, digite todo conteúdo dos exemplos, dessa forma terá maior fixação dos comandos e sintaxe dos mesmos.
2) Todos os testes dos exemplos foram realizados utilizando como sistema operacional o Windows 8, o que não significa que só funcionará no mesmo.

Vamos desenvolver agora uma calculadora para cálculos simples onde poderemos realizar soma, subtração, multiplicação, divisão e também porcentagem.



  1. @echo off
  2. title Calc +  Blog Cabeca Nerd
  3. echo Calc +
  4. echo.
  5. :inicio
  6. echo Escolha uma das opcoes abaixo e prescione a tecla ENTER:
  7. echo.
  8. echo 1-Adicao
  9. echo 2-Subtracao
  10. echo 3-Multiplicacao
  11. echo 4-Divisao
  12. echo 5-Porcentagem
  13. echo 6-Sair
  14. echo.
  15. echo 7-Desenvolvedor
  16. echo.
  17. echo Opcao de escolha:
  18. echo.
  19. set /p op=
  20. if %op%==1 goto adicao
  21. if %op%==2 goto subtracao
  22. if %op%==3 goto multiplicacao
  23. if %op%==4 goto divisao
  24. if %op%==5 goto porcentagem
  25. if %op%==6 exit
  26. if %op%==7 goto desenvolvedor

  27. :adicao

  28. cls
  29. echo Calc +
  30. echo.
  31. echo Digite apenas o primeiro numero da adcao (sem o sinal de "+")
  32. echo e prescione a tecla ENTER
  33. echo.
  34. set /p n1=
  35. echo.
  36. echo Digite apenas o segundo numero da adcao prescione a tecla ENTER
  37. echo.
  38. set /p n2=
  39. cls
  40. echo Calc +
  41. echo.
  42. set /a n3=%n1%+%n2%
  43. echo %n1%+%n2%=%n3%
  44. echo.
  45. echo.
  46. echo Deseja fazer mais calculos? (S/N)
  47. set /p rsp=
  48. cls
  49. echo Calc +
  50. echo.
  51. if %rsp%==s goto inicio
  52. if %rsp%==S goto inicio
  53. if %rsp%==n exit
  54. if %rsp%==N goto inicio

  55. :subtracao

  56. cls
  57. echo Calc +
  58. echo.
  59. echo Digite apenas o primeiro numero da subtracao (sem o sinal de "-")
  60. echo e prescione a tecla ENTER
  61. echo.
  62. set /p n1=
  63. echo.
  64. echo Digite apenas o segundo numero da subtracao prescione a tecla ENTER
  65. echo.
  66. set /p n2=
  67. cls
  68. echo Calc +
  69. echo.
  70. set /a n3=%n1%-%n2%
  71. echo %n1%-%n2%=%n3%
  72. echo.
  73. echo.
  74. echo Deseja fazer mais calculos? (S/N)
  75. set /p rsp=
  76. cls
  77. echo Calc +
  78. echo.
  79. if %rsp%==s goto inicio
  80. if %rsp%==S goto inicio
  81. if %rsp%==n exit
  82. if %rsp%==N goto inicio

  83. :multiplicacao

  84. cls
  85. echo Calc +
  86. echo.
  87. echo Digite apenas o primeiro numero da multiplicacao (sem o sinal de "*")
  88. echo e prescione a tecla ENTER
  89. echo.
  90. set /p n1=
  91. echo.
  92. echo Digite apenas o segundo numero da multiplicacao prescione a tecla ENTER
  93. echo.
  94. set /p n2=
  95. cls
  96. echo Calc +
  97. echo.
  98. set /a n3=%n1%*%n2%
  99. echo %n1%*%n2%=%n3%
  100. echo.
  101. echo.
  102. echo Deseja fazer mais calculos? (S/N)
  103. set /p rsp=
  104. cls
  105. echo Calc +
  106. echo.
  107. if %rsp%==s goto inicio
  108. if %rsp%==S goto inicio
  109. if %rsp%==n exit
  110. if %rsp%==N goto inicio

  111. :divisao

  112. cls
  113. echo Calc +
  114. echo.
  115. echo Digite apenas o primeiro numero da divisao (sem o sinal de "/")
  116. echo e prescione a tecla ENTER
  117. echo.
  118. set /p n1=
  119. echo.
  120. echo Digite apenas o segundo numero da divisao prescione a tecla ENTER
  121. echo.
  122. set /p n2=
  123. cls
  124. echo Calc +
  125. echo.
  126. set /a n3=%n1%/%n2%
  127. echo %n1%/%n2%=%n3%
  128. echo.
  129. echo.
  130. echo Deseja fazer mais calculos? (S/N)
  131. set /p rsp=
  132. cls
  133. echo Calc +
  134. echo.
  135. if %rsp%==s goto inicio
  136. if %rsp%==S goto inicio
  137. if %rsp%==n exit
  138. if %rsp%==N goto inicio

  139. :porcentagem

  140. cls
  141. echo Calc +
  142. echo.
  143. echo Digite apenas o numero referente ao valor onde deve-se extrair
  144. echo a porcentagem e prescione a tecla ENTER
  145. echo.
  146. set /p n1=
  147. echo.
  148. echo Digite apenas o numero referente ao valor da porcentagem (sem o sinal de "%%")
  149. echo e prescione a tecla ENTER
  150. echo.
  151. set /p n2=
  152. cls
  153. echo Calc +
  154. echo.
  155. set /a n3=%n1%*%n2%/100
  156. echo Resultado: %n3%
  157. echo.
  158. echo.
  159. echo Deseja fazer mais calculos? (S/N)
  160. set /p rsp=
  161. cls
  162. echo Calc +
  163. echo.
  164. if %rsp%==s goto inicio
  165. if %rsp%==S goto inicio
  166. if %rsp%==n exit
  167. if %rsp%==N goto inicio

  168. :desenvolvedor

  169. cls
  170. echo Calc +
  171. echo.
  172. echo Calc + e uma calculadora livre para calculos basicos,
  173. echo produzida por Leomar Ilario como parte dos estudos
  174. echo do MS-DOS com arquivos em lote desenvolvida para o
  175. echo Blog Cabeca Nerd.
  176. echo.
  177. echo Contato desenvolvedor: blogcabecanerd@gmail.com
  178. echo.
  179. pause
  180. cls
  181. echo Calc +
  182. echo.
  183. echo Deseja voltar para o menu inicial? (S/N)
  184. set /p rsp=
  185. cls
  186. echo Calc +
  187. echo.
  188. if %rsp%==s goto inicio
  189. if %rsp%==S goto inicio
  190. if %rsp%==n exit
  191. if %rsp%==N goto inicio







O programa ficará da seguinte forma:





Veja também:

domingo, 14 de julho de 2013

Comandos DOS e arquivos .bat (Parte 2)

Criando arquivos .bat (arquivos em lotes)


OBS.: 1) Os programas prontos, para melhor identificação, por padrão, estarão inseridos dentro de tabelas como esta:

  1. Linha Um
  2. Linha Dois
  3. Linha Três 
  4. Linha Quatro
  5. Linha Cinco
  6. Linha Seis
  7. Linha Sete
  8. Linha Oito
  9. Linha Nove
  10. Linha Dez

         2) É altamente recomendado, para melhor aprendizagem, que ao invés de copiar e colar, digite todo conteúdo dos exemplos, dessa forma terá maior fixação dos comandos e sintaxe dos mesmos.
3) Todos os testes dos exemplos foram realizados utilizando como sistema operacional o Windows 8, o que não significa que só funcionará no mesmo.

Para começar, necessitamos de um editor de textos simples, onde o Bloco de Notas do Windows se aplica bem a este caso. Depois de digitarmos os comandos desejados, iremos salvar o arquivo com a extensão .bat, transformando-o assim em um arquivo reconhecido pelo sistema, fazendo com que, para abri-lo seja preciso apenas dar um duplo clique.
É recomendável que nossos programas .bat, iniciem-se com dois comandos: @echo off e title. O primeiro desativa a exibição dos comandos na tela, ou seja, não irá aparecer o nome do comando, mas sim o resultado que ele proporciona. O segundo é onde definimos o título do programa (por exemplo, como aparece agora no seu navegador o título “Cabeça Nerd”).
Nada melhor para aprender algo novo do que praticando. Digite as seguintes linhas:

  1. @echo off
  2. title Blog Cabeca Nerd
  3. echo Primeiro Programa bat!
Salve com um nome preferido mas, não esqueça de digitar também a extensão .bat logo após o nome. Na terceira linha vemos um comando novo, echo, que serve para exibir na tela uma mensagem. Agora execute seu programa e veja o que acontece. Viu? Difícil né?! O seu arquivo funcionou corretamente, entretanto, depois da leitura da linha de número 3 não temos nenhum outro comando, logo, a tela foi fechada normalmente impossibilitando a visualização. Para reparar devemos adicionar mais um comando o pause (seu papel o seu nome já diz, pausa a execução e também mostra uma mensagem para que digite uma tecla qualquer para dar prosseguimento). Por questões de estética na apresentação ao usuário, vamos acrescentar uma linha em branco entre a mensagem “Primeiro Programa bat” e a mensagem provocada pelo comando pause, para isso usa-se echo. (é o comando echo acrescentando-se um ponto “.”) . A estrutura completa ficará:

  1. @echo off
  2. title Blog Cabeca Nerd
  3. echo Primeiro Programa bat!
  4. echo.
  5. pause

Uma das características de um nerd a qual o leva a aprender muitas coisas é a curiosidade. Mesmo você não sendo um nerd, seja curioso também e experimente apagar a primeira linha para ver qual a diferença entre usar e não @echo off

Usando o conceito de variáveis no Prompt de Comando
Variáveis são espaços na memória que servem para armazenar informações, onde as mesmas serão usadas em um determinado programa. Para utilizarmos esse conceito em arquivos .bat ou diretamente no Prompt de Comando, existe  o comando set, onde podemos exibir, definir ou remove tais variáveis. Caso você precise repetir a mesma informação em vários pontos de seu programa é interessante que se use variáveis. Digamos que a informação repetida seja “Blog Cabeca Nerd”, para não repetir tudo isso poderíamos armazenar na variável “blog” (a variável “blog” passaria a ser uma constante). Exemplo: set blog=Blog Cabeca Nerd
Para chamar (utilizar) a variável, coloca-se a mesma entre sinais de porcentagem, %variavel%. Exemplo: echo %blog% . If Se não estiver entre sinais de porcentagem não funcionará.




Entrada de dados no Prompt de Comando
Vejamos a seguinte situação: você deve escrever um programa que peça o nome do usuário e depois mostre na tela. If Se nós fizéssemos como no exemplo anterior teríamos sempre que editar o código fonte, assim, a melhor opção é um programa que realmente peça o nome ao usuário, armazene-o em uma variável e depois exiba-a na tela.
Para capturar e guardar o que é digitado usa-se o comando set juntamente com o parâmetro /p seguido da variável com o sinal de “=”. Exemplo: set /p variavel=


  1. @echo off
  2. title Entrada de dados
  3. echo Digite seu nome:
  4. set /p nome=
  5. cls
  6. echo Seu nome eh %nome%
  7. echo.
  8. pause

Comando if no Prompt de Comando
If (se, em português) é uma estrutura condicional, ou seja, algo só irá ocorrer se a condição for verdadeira. Como exemplo, vamos fazer um menu bem simples para entender melhor esse comando, onde a ideia é comparar o que o usuário digitou, armazenado pela variável “opcao”, com as condições do if que, dependendo do valor, exibirá a mensagem específica:


  1. @echo off
  2. title Comando if
  3. echo 1-Primeira Opcao
  4. echo 2-Segunda Opcao
  5. echo 3-Terceira Opcao
  6. echo.
  7. echo Escolha um numero:
  8. set /p opcao=
  9. cls
  10. if %opcao%==1 echo Escolheu Primeira Opcao
  11. if %opcao%==2 echo Escolheu Segunda Opcao
  12. if %opcao%==3 echo Escolheu Terceira Opcao
  13. echo.
  14. pause


Muitas vezes precisamos fazer comparações como “se a variável for maior que...” ou “se a variável for menor ou igual a...” a isso damos o nome de operadores condicionais. Tabela segue abaixo (à primeira vista os operadores parecem ser um pouco estranhos, mas existe a explicação de cada um): 



Operador
Palavra em Inglês
Tradução
EQU ou ==
EQUals
Igual
NEQ
Not EQuals
Diferente
LSS
LeSS
Menor
LEQ
Less or EQuals
Menor ou igual
GTR
GreaTeR
Maior
GEQ
Greatervor EQuals
Maior ou igual


Comando else no Prompt de Comando
Else (senão, em português) serve para, caso a condição do if não seja satisfeita, automaticamente serão executados os comandos contidos no else. Exemplo: Programa que peça a idade do usuário, se (if) a idade (variável) for maior ou igual a (geq) 18, mostrará na tela (echo) a mensagem “Menor de idade”, senão (else) exiba (echo) a mensagem “Maior de idade”. Muito fácil né!?


  1. @echo off
  2. title Estrutura else
  3. echo Qual a sua idade?
  4. set /p idade=
  5. cls
  6. if %idade% geq 18 (
  7. echo Maior de idade
  8. ) else (
  9. echo Menor de idade
  10. )
  11. echo.
  12. pause


OBS.: Prestem muita atenção aos parênteses, um deles estando na posição errada e o programa não funcionará corretamente. O primeiro parêntese é aberto logo após a declaração do if (não esqueça do espaço em branco antes do parêntese) onde abrange todos os comandos relacionados ao if, feche-o na mesma linha do else (não esqueça do espaço em branco depois do parêntese), após o else abra outro parênteses (não esqueça do espaço em branco antes do parêntese) para por os comandos relacionados ao else. Para fechar, coloque-o em uma linha deixando-o sozinho.


Comando goto no Prompt de Comando
Com o comando goto poderemos “andar” por entre as linhas de código dos nossos programas, dando-nos a possibilidade de irmos a um ponto específico do código. Com ele é possível também fazer loops, ou seja, ao fim de determinados comandos, volta-se ao início dos mesmos. Sua sintaxe é o nome do comando junto com um rótulo (entenda rótulo como sendo o nome que faz referência ao ponto onde o comando goto irá direcionar a continuação da leitura do programa pelo Prompt de Comando) o mesmo deve ser iniciado por “:”.

  1. @echo off
  2. title Comando goto
  3. :inicio
  4. cls
  5. echo Qual a sua idade?
  6. set /p idade=
  7. cls
  8. if %idade% geq 18 (
  9. echo Maior de idade
  10. ) else (
  11. echo Menor de idade
  12. )
  13. echo.
  14. pause
  15. cls
  16. echo 1-Continuar
  17. echo 2-Fechar
  18. echo.
  19. echo Escolha um numero:
  20. set /p opcao=
  21. cls
  22. if %opcao%==1 goto inicio
  23. if %opcao%==2 goto fim
  24. :fim
  25. exit


 Na Parte 3 iremos aumentar o nível de dificuldade fazendo um programa mais completo e estruturado. Veja também Comandos DOS e arquivos .bat (Parte 1)

quarta-feira, 3 de julho de 2013

Comandos DOS e arquivos .bat (Parte 1)

Comandos básicos:


OBS.: 1) Nem todos os comandos mostrados aqui são propriamente do DOS, mas podem ser executados através de um arquivo .bat.
2) Todos os testes dos exemplos foram realizados utilizando como sistema operacional o Windows 8, o que não significa que só funcionará no mesmo.

DOS é a sigla de Disk Operating System (sistema operacional de disco). Existem várias versões de DOS. A mais conhecida é o MS-DOS, da Microsoft (por isso, as iniciais MS). São sistemas que utilizam linha de comando como forma de entrada para realizarem suas funções (não usam interface gráfica). Outros sistemas são os PC-DOS, DR-DOS, FreeDOS, entre outros. Tudo que será visto aqui estará relacionado ao MS-DOS pelo fato do mesmo fazer parte do Windows com o nome de Prompt de Comando (cmd.exe).
Através do Prompt de Comando é possível realizar diversas funções, como navegar, criar e apagar pastas, listar os seus conteúdos, criar e apagar arquivos e muito mais. Dessa forma temos acesso ao Windows e podemos fazer uma dessas ações ou várias, uma seguida da outra sem precisar digitar comando por comando e mais, sendo algo que seja uma rotina, podemos guardar esses comando em arquivo para ser usado sempre que necessitarmos, são os arquivos com extensão .bat.

Para abrir o Prompt de Comando pressione a tecla com o logotipo do Windows + R, aparecerá a janela Executar, nela digite cmd e aperte “OK”.



Surgirá uma tela parecida com esta, onde iremos digitar os comandos.


Alguns comandos:



dir – Lista as pastas e arquivos contidos no diretório atual.

cmd – Inicia uma nova instância do interpretador de comandos do Windows.

date – Exibe ou ajusta a data.

time – Exibe ou ajusta a hora do sistema.

start – Inicia uma janela separada para executar um programa ou comando especificado.

cd – Entra em uma pasta que está dentro de seu diretório atual. Com este exemplo entraria na pasta “cabeca-nerd” que está dentro do diretório raiz (C:\): Ex.: C:\>cd cabeca-nerd
Caso necessite avançar em mais de uma pasta usa-se uma barra invertida “\”entre os nomes das pastas.
Ex.: C:\>cd cabeca-nerd\imagens

cd .. – Volta uma pasta.
Ex.: C:\cabeca-nerd\imagens>cd ..
No exemplo acima iremos voltar para a pasta “cabeca-nerd”.

cd\ – Atalho para voltar ao diretório raiz independente da pasta atual.

copy diretorioorigem diretoriodestino – copia um arquivo ou pasta de um “diretório origem” para um “diretório destino”.
Ex.: C:\>copy C:\windows\System32\calc.exe C:\cabeca-nerd
Acabamos de copiar a calculadora do Windows para a pasta “cabeca-nerd”.

md – Cria uma pasta no diretório atual.
Ex.: C:\cabeca-nerd>md vídeos
Cria uma pasta de nome “vídeos” no diretório “cabeca-nerd”.

rd – Remove (exclui) uma pasta vazia.
Ex.: C:\cabeca-nerd>rd vídeos
Exclui uma pasta de nome “vídeos” no diretório “cabeca-nerd”. Mas, e se a pasta “vídeos” não estiver vazia? Caso isso ocorra, devemos utilizar o mesmo comando acrescentando-lhe parâmetro.
Ex.: C:\cabeca-nerd>rd vídeos /s
ou
Ex.: C:\cabeca-nerd>rd vídeos /q
Nesses dois últimos exemplos, o segundo apaga a pasta “vídeos” com todo seu conteúdo sem pedir confirmação diferentemente do primeiro exemplo.

del – Deleta arquivo.
Ex.: C:\cabeca-nerd>del arq.txt
Deleta um arquivo de nome “arq.txt” no diretório “cabeca-nerd”.

rename ou ren – Altera o nome do arquivo ou pasta, usando a sintaxe rename antes.txt depois.txt .
Ex.: C:\cabeca-nerd>rename arq.txt arquivo.txt
Altera o nome do arquivo “arq.txt” para “arquivo.txt” no diretório “cabeca-nerd”.

cls –  Limpa a tela.

help – Fornece informações de ajuda sobre comandos do Prompt de Comando.

help nomedocomando – Fornece informações de ajuda sobre o comando especificado em nomedocomando.

shutdown – Permite o desligamento local ou remoto adequado do computador.

taskkill – Termina ou interrompe um processo ou aplicativo em execução. Ex.: C:\cabeca-nerd>taskkill /im firefox.exe

exit – Sai do programa CMD.EXE (interpretador de comandos).


Esses são apenas alguns comandos, existem muitos outros. Na Parte 2 iremos usá-los, juntamente com outros, para juntá-los em arquivos em lote (.bat).