Hey guys!
Nesse artigo bem simples, vou compartilhar com vocês um script que eu desenvolvi para atender uma necessidade bem comum no dia a dia de quem cria cursos e treinamentos, que é criar uma planilha ou arquivo CSV, contendo a lista de vídeos, tamanho e a duração de cada vídeo, de modo a manter a estrutura de pastas para conseguir calcular a duração total dos vídeos e também, conseguir somar a duração total por diretório e por arquivo, para disponibilizar isso numa plataforma de cursos, por exemplo.
Para esse exemplo, eu utilizei os arquivos do meu curso de Banco de Dados no Azure, que já estão separados por diretórios separados para cada módulo:
Mas reparem que existem 2 pastas dentro do diretório do curso, chamadas “Geral” e “Marketing”, que são vídeos de divulgação e que não quero considerá-los para montar e disponibilizar a grade do treinamento e nem pra calcular a duração total dos vídeos. Ou seja, quero ignorar esses 2 diretórios da minha listagem.
Além disso, ao final da listagem, ao invés de mostrar na tela de console, quero exportar essa lista para um arquivo CSV, onde eu consigo abrir num editor de texto ou no Microsoft Excel.
Como executar scripts Powershell
Assim como qualquer outro script Powershell, para executá-lo, basta abrir o prompt de comando, digitando o comando “cmd” na barra de pesquisa:
Uma outra forma de abrir o prompt de comando, é digitar as teclas Win + R, para abrir a janela de Executar, digite o comando “cmd” e aperte a tecla “Enter”:
Na tela de console que foi aberta, digite o comando “powershell”, para entrar no console do Powershell:
Agora é só digitar os comandos Powershell que você desejar.
Executando o script Powershell para gerar a listagem
Para executar o nosso script Powershell para gerar a listagem desejada, copie o script abaixo e cole na tela do Powershell:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
$Directory = "C:\Cursos\Azure\" $Shell = New-Object -ComObject Shell.Application Get-ChildItem -Path $Directory -Recurse -Force -Include *.mp4 | where fullname -notmatch 'Marketing' | where fullname -notmatch 'Geral' | ForEach { $Folder = $Shell.Namespace($_.DirectoryName) $File = $Folder.ParseName($_.Name) $Duration = $Folder.GetDetailsOf($File, 27) [PSCustomObject]@{ Directory = $_.Directory -Replace ([Regex]::Escape("\Videos")), "" -Replace ([Regex]::Escape($Directory)), "" Name = $_.Name -Replace ".mp4", "" Size = "$([int]($_.length / 1mb)) MB" Duration = $Duration } } | Export-Csv -Path "C:\Cursos\Azure\temp.csv" -NoTypeInformation -Encoding UTF8 -Delimiter ";" |
Se você não sabe como fazer isso, copie o script acima e clique com o botão direito no console para colar (vai colar direto, sem mostrar o menu). Agora aperte a tecla “Enter” para executar:
Se você viu essa tela acima, é porque o script foi executado sem erros.
Abrindo o arquivo gerado temp.csv, veremos a lista completa dos vídeos, diretório, tamanho e duração. Posso selecionar, por exemplo, os vídeos apenas do diretório “Módulo 1 – Azure SQL” e agora, analisar a quantidade de vídeos, duração média e o tempo total da duração desses vídeos, conforme o exemplo abaixo:
E aí, gostaram dessa dica?
Um grande abraço e até a próxima!
When I run the above command in powershell. I did change the path to my external HD. I get the following error below with no output to csv file.
Get-ChildItem : Access to the path ‘D:\System Volume Information’ is denied.
At line:4 char:1
+ Get-ChildItem -Path $Directory -Recurse -Force -Include *.mp4 *.mkv |
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (D:\System Volume Information:String) [Get-ChildItem], UnauthorizedAcc
essException
+ FullyQualifiedErrorId : DirUnauthorizedAccessError,Microsoft.PowerShell.Commands.GetChildItemCommand