DEV Community

Trabalhando com informações do sistema

Seguindo com o nosso post anterior, vamos agora antes de criar a pasta, validar se ela já não existe no sistema para evitar duplicações e erros.

Para fazer isso precisamos receber informações do sistema e valida-las, sendo mais especifico, precisamos saber quais pastas existem e verificar se a que queremos criar está entre elas. Esse cenário é muito comum, quando temos um script que ira continuamente ser executado ou se queremos validar uma instalação.

Em nosso script, vamos adicionar antes da criação da pasta, uma etapa de validação onde utilizaremos uma função do Powershell chamada Test-Path, ou se traduzirmos Testar-Caminho.
Com essa função, informando um caminho, validamos se o mesmo existe ou não.

Notamos o como ela é especifica e muito simples de usar, gostaria de aproveitar esse momento para compartilhar algo sobre a linguagem. Costumo dizer que sempre que pensamos em algo que muitas pessoas utilizariam e que faz sentido, é muito provável que já tenhamos uma função pronta para esse procedimento, valendo sempre muito a pena pesquisar sobre antes de tentar criar manualmente algo que faça o mesmo procedimento.

Fora a função, precisamos tratar o seu retorno, uma vez que com ela apenas saberemos se o caminho existe ou não, por meio do retorno True(verdadeiro) ou False(falso).
Para isso, vamos usar a estrutura IF-ELSE, onde passamos uma parâmetro que queremos validar. Nesse caso, utilizaremos isso de uma forma bem simples, mas conversaremos melhor sobre.

Traduzindo isso em código:

Para testar vamos tentar criar a mesma pasta duas vezes, no lado esquerdo temos a primeira tentativa e no direito a segunda.
Retorno Comando
Como podemos ver, nossa validação está funcionando e o sistema não tenta criar uma pasta já existente.

Com essas pequenas adições, conseguimos aprimorar nosso script de criação de pastas e aumentar nosso leque de possibilidades dentro do Powershell. mas será que podemos fazer isso pelo caminho mais longo? Sem utilizar o Test-Path?
E a resposta é sim, embora não recomende.

Como o objetivo aqui é aprender, vamos pensar em como podemos fazer isso, mesmo não fazendo muito sentido, uma vez que aumentaríamos sem precisar a complexidade de nosso código e isso nunca é indicado, já que aumenta as chances de termos problemas.

Vamos pensar um pouco no que nossa função faz:

  1. Recebe um caminho
  2. Verifica quais pastas existem dentro do caminho base
  3. Valida se existe alguma pasta com o mesmo nome da nossa
  4. Retorna verdadeiro ou falso

Para validar esse algoritmo, vamos criar um outro script com esse conceito adicionado a nossa criação de pastas:

Não seria possível concluirmos esse modo difícil com o conhecimento que explicamos até aqui, mas futuramente vamos conversar mais sobre Foreach, já que ele vai ser muito útil para nossas automações.

Nosso caminho difícil pode gerar problemas, uma vez que tentando validar se nossa pasta já existe, não estamos trabalhando com um cenário onde nosso caminho não existe.
Será que existe uma forma simples de tratar erros em nosso código?
E a resposta inicial é... TRY-CATCH, ou como gosto de chamar, o próximo tópico que conversaremos nessa serie haha

Top comments (0)