« Code:Powershell-script video conversion-020.ps1 » : différence entre les versions
Aller à la navigation
Aller à la recherche
(Page créée avec « <source> 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... ») |
mAucun résumé des modifications |
||
| (2 versions intermédiaires par le même utilisateur non affichées) | |||
| Ligne 1 : | Ligne 1 : | ||
<source> | <source> | ||
Clear-Host | |||
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 = Get-ChildItem *.mp4 | ||
$compteur = 0 | $compteur = 0 | ||
ForEach ($fichier in $listeFichier) { | |||
$compteur = $compteur + 1 | |||
$compteur = $compteur + 1 | $tailleListe = $listeFichier.Length | ||
$ | |||
# récupération des dates des fichiers | # récupération des dates des fichiers | ||
$ | $dateCreation = $fichier.CreationTime | ||
$ | $dateModif = $fichier.LastWriteTime | ||
$ | $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- | 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 { | |||
$ | $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 | $duree = $fintraitement - $debuttraitement | ||
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). | $(Get-Item $fichier).CreationTime = $($datemodif) | ||
$(Get-Item $fichier).LastWriteTime=$($datemodif) | $(Get-Item $fichier).LastWriteTime = $($datemodif) | ||
$(Get-Item $fichier). | $(Get-Item $fichier).LastAccessTime = $($datemodif) | ||
} | } | ||
Catch { | |||
Write-Host $compteur "/" $tailleliste " : " $fichier.Name $taille.ToString("#") " | Erreur fichier " $fichierAncien | |||
} | } | ||
} | } | ||
</source> | </source> | ||
[[Catégorie:Code PowerShell]] | |||
Dernière version du 2 février 2025 à 14:18
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) {
$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
}
}