« Code:Powershell-script video conversion-020.ps1 » : différence entre les versions

Aller à la navigation Aller à la recherche
mAucun résumé des modifications
mAucun résumé des modifications
 
Ligne 1 : Ligne 1 :
<source>
<source>
cls
Clear-Host
set-location C:\Support\ffmpeg
Set-Location C:\Support\ffmpeg


# Attention. Pour les noms de fichiers qui contiennent des espaces, le script de fonctionne pas.
# 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.
# en solution rapide, prévoir de renommer le fichier avant traitement.
$listefichier = gci *.mp4
$listeFichier = Get-ChildItem *.mp4
$compteur = 0
$compteur = 0


foreach ($fichier in $listefichier) {
ForEach ($fichier in $listeFichier) {
   $tl=$listefichier.length
   $tl         = $listeFichier.length
   $compteur = $compteur + 1
   $compteur   = $compteur + 1
   $tailleliste = $listefichier.length
   $tailleListe = $listeFichier.Length
    
    
   # récupération des dates des fichiers
   # récupération des dates des fichiers
   $datecreation = $fichier.CreationTime
   $dateCreation = $fichier.CreationTime
   $datemodif = $fichier.LastWriteTime
   $dateModif    = $fichier.LastWriteTime
   $dateacces = $fichier.LastAccessTime
   $dateAcces    = $fichier.LastAccessTime
   $taille = $fichier.Length/1024
   $taille       = $fichier.Length/1024


   # renommage des fichiers
   # renommage des fichiers
   $fichierNom=$fichier.BaseName
   $fichierNom   = $fichier.BaseName
   $fichierExt=$fichier.Extension
   $fichierExt   = $fichier.Extension
   $fichierAncien = $fichier.BaseName + "-vieux" + $fichier.Extension
   $fichierAncien = $fichier.BaseName + "-vieux" + $fichier.Extension
   Rename-item -Path $fichier -NewName $fichierAncien
   Rename-Item -Path $fichier -NewName $fichierAncien
   $fichierNouveau = $fichier
   $fichierNouveau = $fichier


   # arguments pour le traitement vidéo
   # 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=1280:720 " + $fichierNouveau
   # $arg="-i " + $fichierAncien + " -r 25 -b:v 2048k -b:a 96k -vf scale=720:1280 " + $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
   # l'option -Wait permet d'attendre la fin d'un traitement avant de lancer le suivant
  try {
  Try {
     $debuttraitement = Get-Date # Début de traitement
     $debutTraitement = Get-Date # Début de traitement
     write-host $compteur "/" $tailleliste " : " $fichier.name $taille.tostring("#") " | En cours"
     Write-Host $compteur "/" $tailleliste " : " $fichier.Name $taille.ToString("#") " | En cours"
     start-process -Wait ffmpeg.exe -argumentlist $arg  
     Start-Process -Wait ffmpeg.exe -ArgumentList $arg  
     $fintraitement = Get-Date # Fin de traitement
     $finTraitement = Get-Date # Fin de traitement
     $duree = $fintraitement - $debuttraitement
     $duree         = $fintraitement - $debuttraitement
     write-host "    Terminé. Durée de traitement :" $duree.TotalSeconds "s"
     Write-Host "    Terminé. Durée de traitement :" $duree.TotalSeconds "s"
     Start-Sleep -s 3
     Start-Sleep -s 3


     # modification des dates des nouveaux fichiers
     # modification des dates des nouveaux fichiers
     $(Get-Item $fichier).creationtime=$($datemodif)
     $(Get-Item $fichier).CreationTime  = $($datemodif)
     $(Get-Item $fichier).LastWriteTime=$($datemodif)
     $(Get-Item $fichier).LastWriteTime = $($datemodif)
     $(Get-Item $fichier).lastaccesstime=$($datemodif)
     $(Get-Item $fichier).LastAccessTime = $($datemodif)
     }
     }
  catch {
Catch {
     write-host write-host $compteur "/" $tailleliste " : " $fichier.name $taille.tostring("#") " | Erreur fichier " $fichierAncien
     Write-Host $compteur "/" $tailleliste " : " $fichier.Name $taille.ToString("#") " | Erreur fichier " $fichierAncien
     }
     }
  }
  }

Dernière version du 27 novembre 2023 à 23:56

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
    }
 }