cls
set-location C:\Support\ffmpeg
# Attention. Pour les noms de fichiers qui contiennent des espaces, le script de fonctionne pas.
# en solution rapide, prévoir de renommer le fichier avant traitement.
$listefichier = gci *.mp4
$compteur = 0
foreach ($fichier in $listefichier) {
$tl=$listefichier.length
$compteur = $compteur + 1
$tailleliste = $listefichier.length
# récupération des dates des fichiers
$datecreation = $fichier.CreationTime
$datemodif = $fichier.LastWriteTime
$dateacces = $fichier.LastAccessTime
$taille = $fichier.Length/1024
# renommage des fichiers
$fichierNom=$fichier.BaseName
$fichierExt=$fichier.Extension
$fichierAncien = $fichier.BaseName + "-vieux" + $fichier.Extension
Rename-item -Path $fichier -NewName $fichierAncien
$fichierNouveau = $fichier
# arguments pour le traitement vidéo
$arg="-i " + $fichierAncien + " -r 25 -b:v 2048k -b:a 96k -vf scale=1280:720 " + $fichierNouveau
# $arg="-i " + $fichierAncien + " -r 25 -b:v 2048k -b:a 96k -vf scale=720:1280 " + $fichierNouveau
# l'option -Wait permet d'attendre la fin d'un traitement avant de lancer le suivant
try {
$debuttraitement = Get-Date # Début de traitement
write-host $compteur "/" $tailleliste " : " $fichier.name $taille.tostring("#") " | En cours"
start-process -Wait ffmpeg.exe -argumentlist $arg
$fintraitement = Get-Date # Fin de traitement
$duree = $fintraitement - $debuttraitement
write-host " Terminé. Durée de traitement :" $duree.TotalSeconds "s"
Start-Sleep -s 3
# modification des dates des nouveaux fichiers
$(Get-Item $fichier).creationtime=$($datemodif)
$(Get-Item $fichier).LastWriteTime=$($datemodif)
$(Get-Item $fichier).lastaccesstime=$($datemodif)
}
catch {
write-host write-host $compteur "/" $tailleliste " : " $fichier.name $taille.tostring("#") " | Erreur fichier " $fichierAncien
}
}