Modèle:Script

Révision datée du 7 juin 2022 à 14:30 par Fylip22 (discussion | contributions)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche
Documentation

Utiliser le modèle comme suit :

{{script|nomdufichierducode}}

Exemple :

{{script|powershell-script video conversion-020.ps1}}

Le résultat donne :

Contenu du fichier powershell-script video conversion-020.ps1 Accès au code
Clear-Host
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 = Get-ChildItem *.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 $compteur "/" $tailleliste " : " $fichier.Name $taille.ToString("#") " | Erreur fichier " $fichierAncien
    }
 }