Le script reçoit un paramètre envoyé par le fichier batch, lit un fichier Music Logs et génère une liste avec un en-tête et deux colonnes contenant le nom de la musique et la valeur LUFS de chaque musique, selon une plage de valeurs LUFS.
Lorsque j'exécute la commande en dehors du fichier batch, le script fonctionne correctement, mais lorsque je l'exécute via le fichier batch, la liste est générée de manière incorrecte.
script :
Param(
[decimal]$env:_vLUF
)
[decimal]$vLUFps = $env:_vLUF
$files = "C:\Users\$env:username\Desktop\Logs_LUFS\List Music FOR NORMALIZATION.txt"
$logs = "C:\Users\$env:username\Desktop\Logs_Musics"
# READ LOG files of Musics and generates the List Music FOR NORMALIZATION.txt ($files)
$logMatches = Select-String -Path "C:\Users\$env:username\Desktop\Logs_Musics\*.*" -Pattern '(?<I>^ +I:) +(?<LUFS>.+)|(?<I>^Input Integrated:) +(?<LUFS>.+)' -List | Select-Object -Property FileName -ExpandProperty Matches
$results = foreach ($log in $logMatches) {
$pos = $log.Filename.IndexOf("_")
$leftPart = $log.Filename.Substring(0, $pos)
$rightPart = $log.Filename.Substring($pos+1)
$LUFS = $log.Groups | Where-Object { $_.Name -eq "LUFS" }
[PSCustomObject]@{
Música = $rightPart
LUFS = [decimal]$($LUFS.Value -replace " .*")
}
}
$vLUFpsLess= ($vLUFps)+ (-0.9)
$vLUFpsGreat= ($vLUFps)+ (-0.5)
$results | Where-Object {($_.LUFS -lt $vLUFpsLess) -or ($_.LUFS -gt $vLUFpsGreat) } | Out-file $files
Commande exécutée dans le fichier batch pour exécuter le script :
powershell.exe -executionpolicy remotesigned -File "D:\z_Batchs and Scripts\Batchs\LUFS_Normalize\ArqsNorms_LUFS_pass.ps1" %_vLUF%
El %_vLUF%
est le paramètre passé au script.
Liste correctement générée par le script exécuté en dehors du fichier batch :
Liste générée, de manière incorrecte, par le script exécuté via un fichier batch :
Nota:
Via un fichier batch, le script coupe le nom de la musique avec plus de caractères et coupe également la colonne LUFS.
La commande Out-file ne génère pas correctement le fichier .txt lorsque le script est exécuté via un fichier batch. Dois-je ajouter une autre commande à mon script pour qu'il s'exécute correctement via un fichier batch ?