,

Como usar Scripts CMD para Automação

Olá, pessoal, compartilho com vocês uma solução para automatizar tarefas com arquivos, de qualquer extensão, no seu computador utilizando recursos do próprio maquinário. Este recurso se chama CMD que é o Command Prompt (Prompt de Comando). Basicamente podemos escrever scripts em txt, salvar este arquivo com a extensão .bat e teremos um pequeno aplicativo para nos ajudar no dia a dia.

O exemplo que utilizarei nessa postagem é uma solução para organizar arquivos nas suas devidas pastas, mas podemos utilizá-lo para muitos fins. Adapte a lógica para a sua realidade.

A – Defina as Regras no Script

Antes de codar de fato, é importante escrever a lógica do que você quer que aconteceça. Para este exemplo eu fiz assim:

Sempre que um arquivo PDF estiver salvo na pasta C:\Usuarios\Fulano\Extratos
faremos a leitura do nome do arquivo e se o quarto e quinto caractere der match com lista abaixo eles serão transferidos para uma pasta destino:

– Se os caracteres forem: 01 transfere p/ a pasta 1.Jan em C:\Usuarios\Fulano\Extratos\1.Jan
– Se os caracteres forem: 02 transfere p/ a pasta 2.Fev em C:\Usuarios\Fulano\Extratos\2.Fev
– Se os caracteres forem: 03 transfere p/ a pasta 3.Mar em C:\Usuarios\Fulano\Extratos\3.Mar
– Se os caracteres forem: 04 transfere p/ a pasta 4.Abr em C:\Usuarios\Fulano\Extratos\4.Abr
– Se os caracteres forem: 05 transfere p/ a pasta 5.Mai em C:\Usuarios\Fulano\Extratos\5.Mai
– Se os caracteres forem: 06 transfere p/ a pasta 6.Jun em C:\Usuarios\Fulano\Extratos\6.Jun
– Se os caracteres forem: 07 transfere p/ a pasta 7.Jul em C:\Usuarios\Fulano\Extratos\7.Jul
– Se os caracteres forem: 08 transfere p/ a pasta 8.Ago em C:\Usuarios\Fulano\Extratos\8.Ago
– Se os caracteres forem: 09 transfere p/ a pasta 9.Set em C:\Usuarios\Fulano\Extratos\9.Set
– Se os caracteres forem: 10 transfere p/ a pasta 10.Out em C:\Usuarios\Fulano\Extratos\10.Out
– Se os caracteres forem: 11 transfere p/ a pasta 11.Nov em C:\Usuarios\Fulano\Extratos\11.Nov
– Se os caracteres forem: 12 transfere p/ a pasta 12.Dez em C:\Usuarios\Fulano\Extratos\12.Dez

A lógica portanto, é SE isso acontecer ENTÃO faça X coisa. É importante treinar essa parte para ter qualidade nos seus códigos. Há vários cursos gratuitos na internet para nos apoiar com isso. Segue o link de um: https://youtu.be/jBIPvXHRYpg?si=q2i7RgJE-goZsDdB

B – Escreva o Script de Acordo com a Sintaxe do CMD

@echo off
setlocal enabledelayedexpansion

rem Define a pasta de origem e destino
set "source_folder=C:\Usuarios\Fulano\Extratos"
set "dest_folder=C:\Usuarios\Fulano\Extratos"

rem Muda para a pasta de origem
cd /d "%source_folder%"

rem Loop através de arquivos PDF
for %%F in (*.pdf) do (
set "filename=%%~nF"
set "month_code=!filename:~3,2!"


echo Processando arquivo: %%F
echo Código do mês: !month_code!

rem Verifica o código do mês e define a pasta correspondente
if "!month_code!"=="01" (
    set "target_folder=%dest_folder%\1.Jan"
) else if "!month_code!"=="02" (
    set "target_folder=%dest_folder%\2.Fev"
) else if "!month_code!"=="03" (
    set "target_folder=%dest_folder%\3.Mar"
) else if "!month_code!"=="04" (
    set "target_folder=%dest_folder%\4.Abr"
) else if "!month_code!"=="05" (
    set "target_folder=%dest_folder%\5.Mai"
) else if "!month_code!"=="06" (
    set "target_folder=%dest_folder%\6.Jun"
) else if "!month_code!"=="07" (
    set "target_folder=%dest_folder%\7.Jul"
) else if "!month_code!"=="08" (
    set "target_folder=%dest_folder%\8.Ago"
) else if "!month_code!"=="09" (
    set "target_folder=%dest_folder%\9.Set"
) else if "!month_code!"=="10" (
    set "target_folder=%dest_folder%\10.Out"
) else if "!month_code!"=="11" (
    set "target_folder=%dest_folder%\11.Nov"
) else if "!month_code!"=="12" (
    set "target_folder=%dest_folder%\12.Dez"
)

rem Verifica se a pasta de destino existe, se não existir, cria a pasta
if not exist "!target_folder!" (
    mkdir "!target_folder!"
)

rem Exibe o caminho de destino para depuração
echo Tentando mover para: "!target_folder!\"

rem Move o arquivo para a pasta de destino
move "%%F" "!target_folder!\" 
)

echo Transferência concluída!
pause

C – Explicação do código e suas Funções

  1. @echo off
    Função: Desativa a exibição dos comandos no console enquanto o script está sendo executado. Isso torna a saída mais limpa.
  2. setlocal enabledelayedexpansion
    Função: Inicia um novo contexto de variável local e ativa a expansão tardia de variáveis, permitindo que variáveis dentro de loops sejam atualizadas e exibidas corretamente.
  3. set “source_folder=…” e set “dest_folder=…”
    Função: Define as variáveis source_folder e dest_folder com os caminhos das pastas de origem e destino. O uso de aspas evita problemas com espaços em branco.
  4. cd /d “%source_folder%”
    Função: Troca o diretório atual para a pasta de origem especificada. O /d permite mudar o diretório mesmo que ele esteja em uma unidade diferente.
  5. for %%F in (*.pdf) do ( … )
    Função: Inicia um loop que itera sobre todos os arquivos PDF na pasta de origem. %%F representa cada arquivo encontrado.
  6. set “filename=%%~nF”
    Função: Atribui o nome do arquivo (sem a extensão) à variável filename.
  7. set “month_code=!filename:~3,2!”
    Função: Extrai os 2 caracteres a partir da 4ª posição do nome do arquivo (assumindo que o nome contém o código do mês) e armazena na variável month_code.
  8. echo Processando arquivo: %%F
    Função: Exibe uma mensagem no console informando qual arquivo está sendo processado.
  9. echo Código do mês: !month_code!
    Função: Exibe o código do mês extraído do nome do arquivo no console.
  10. if “!month_code!”==”01” ( … ) else if …
    Função: Estrutura condicional que verifica o valor de month_code e define a variável target_folder correspondente ao mês. Se o mês for “01”, define o caminho para a pasta “1.Jan”, e assim por diante.
  11. if not exist “!target_folder!” ( mkdir “!target_folder!” )
    Função: Verifica se a pasta de destino (target_folder) não existe. Se não existir, cria a pasta usando mkdir.
  12. echo Tentando mover para: “!target_folder!\”
    Função: Exibe o caminho de destino no console, permitindo a depuração.
  13. move “%%F” “!target_folder!\”
    Função: Move o arquivo PDF atual (%%F) para a pasta de destino especificada em target_folder.
  14. echo Transferência concluída!
    Função: Exibe uma mensagem no console indicando que o processo de transferência foi concluído.
  15. pause
    Função: Pausa a execução do script e aguarda que o usuário pressione uma tecla antes de fechar a janela do console.

D – Salvamento e utilização
Agora que você escreveu o código você precisa salvá-lo em uma extensão diferente chamada “.bat”

Depois disso ele aparecerá assim:

Agora é só dar um duplo clique que a função será executada.


E – Conclusão e Possibilidades
A funcionalidade implementada no código permite automatizar a organização de arquivos PDF em pastas específicas, baseando-se em um código de mês extraído do nome do arquivo. Ao executar o script, os arquivos PDF da pasta de origem são analisados e movidos para pastas designadas (como “1.Jan”, “2.Fev”, etc.) dentro da mesma estrutura de diretórios. Isso não apenas economiza tempo, eliminando a necessidade de mover manualmente cada arquivo, mas também melhora a organização dos documentos, facilitando o acesso e a consulta futura.

Explore possibilidades, descreverei aqui algumas outras maneiras de utilizar o CMD (Prompt de Comando) para automação de tarefas:

  1. Backup de Arquivos:
    • Você pode criar um script que copia arquivos de uma pasta de origem para uma pasta de backup.
    bat@echo off xcopy "C:\MinhasImagens\*" "D:\Backup\MinhasImagens\" /E /I
  2. Limpeza de Diretório:
    • Remover arquivos antigos de uma pasta que não foram modificados nos últimos 30 dias.
    bat@echo off forfiles /p "C:\MinhasImagens" /s /m *.jpg /d -30 /c "cmd /c del @path"
  3. Concatenar Arquivos de Texto:
    • Juntar todos os arquivos de texto em um diretório em um único arquivo.
    bat@echo off copy "C:\MeusTextos\*.txt" "C:\MeusTextos\TodosOsTextos.txt"
  4. Renomear Múltiplos Arquivos:
    • Renomear todos os arquivos em um diretório, adicionando um prefixo.
    bat@echo off setlocal enabledelayedexpansion set "prefix=Novo_" for %%F in (*.txt) do ( ren "%%F" "!prefix!%%F" )
  5. Monitorar Processos:
    • Criar um script que verifica se um programa está em execução e, se não estiver, inicia o programa.
    bat@echo off tasklist | find /I "notepad.exe" >nul if errorlevel 1 ( start notepad.exe )
  6. Agendar Tarefas:
    • Você pode usar o schtasks para agendar a execução de scripts em horários específicos.
    batschtasks /create /tn "MeuScriptDiario" /tr "C:\Scripts\MeuScript.bat" /sc daily /st 14:00

Esses são apenas alguns exemplos que mostram como o CMD pode ser utilizado para automatizar diversas tarefas, aumentando a eficiência e reduzindo o trabalho manual. Você pode adaptar esses scripts para atender às suas necessidades específicas e criar soluções personalizadas para o seu fluxo de trabalho

Obrigada!
KHASHIMOTO


Deixe um comentário

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.