Question
Lecture de tags - Problème de format ?
- Marc VAN DAMME
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 5
- Remerciements reçus 0
il y a 2 ans 9 mois #31178
par Marc VAN DAMME
Lecture de tags - Problème de format ? a été créé par Marc VAN DAMME
Bonjour à tous,
Je me casse la tête sur ce code. Je souhaite lire mes fichiers MP3 et leurs tags Windows. Mais lorsque j'injecte les valeurs attendues j'obtiens le message d'erreur suivant (j'ai mis en gras les lignes 23 et 25 en gras)
Impossible d’appeler une méthode dans une expression Null.
Au caractère E:\Software\Script Powershell\MP3_Tag - Export 3.ps1:23 : 5
+ $objFile = $objFolder.ParseName($MyFileName)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation : ( [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
Impossible d’appeler une méthode dans une expression Null.
Au caractère E:\Software\Script Powershell\MP3_Tag - Export 3.ps1:25 : 5
+ $IdTag_Year = $objFolder.GetDetailsOf($objFile, 15)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation : ( [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
Mon code :
CLS
Clear-Host
#Répertoire MP3 à lire
$dataFolder = Set-Location "E:\_Singles"
$MyFolder = Get-ChildItem -Path $dataFolder -Recurse -File | Where-Object {$_.Name -match 'mp3$'}
foreach ($MyFile in $MyFolder)
{
Write-Host $MyFile
$MyFileName = $MyFile.Name
write-host $MyFileName
$MyFileFullName = $MyFile.fullname
write-host $MyFileFullName
write-host $MyFile.directory
$MyFileDirectory = $MyFile.directory
write-host $MyFileDirectory
$objShell = New-Object -ComObject Shell.Application
$objFolder = $objShell.Namespace($MyFileDirectory)
$objFile = $objFolder.ParseName($MyFileName)
$IdTag_Year = $objFolder.GetDetailsOf($objFile, 15)
#write-host $IdTag_Year
}
Auriez-vous une idée ?
Merci par avance.
Marc.
Je me casse la tête sur ce code. Je souhaite lire mes fichiers MP3 et leurs tags Windows. Mais lorsque j'injecte les valeurs attendues j'obtiens le message d'erreur suivant (j'ai mis en gras les lignes 23 et 25 en gras)
Impossible d’appeler une méthode dans une expression Null.
Au caractère E:\Software\Script Powershell\MP3_Tag - Export 3.ps1:23 : 5
+ $objFile = $objFolder.ParseName($MyFileName)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation : ( [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
Impossible d’appeler une méthode dans une expression Null.
Au caractère E:\Software\Script Powershell\MP3_Tag - Export 3.ps1:25 : 5
+ $IdTag_Year = $objFolder.GetDetailsOf($objFile, 15)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation : ( [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
Mon code :
CLS
Clear-Host
#Répertoire MP3 à lire
$dataFolder = Set-Location "E:\_Singles"
$MyFolder = Get-ChildItem -Path $dataFolder -Recurse -File | Where-Object {$_.Name -match 'mp3$'}
foreach ($MyFile in $MyFolder)
{
Write-Host $MyFile
$MyFileName = $MyFile.Name
write-host $MyFileName
$MyFileFullName = $MyFile.fullname
write-host $MyFileFullName
write-host $MyFile.directory
$MyFileDirectory = $MyFile.directory
write-host $MyFileDirectory
$objShell = New-Object -ComObject Shell.Application
$objFolder = $objShell.Namespace($MyFileDirectory)
$objFile = $objFolder.ParseName($MyFileName)
$IdTag_Year = $objFolder.GetDetailsOf($objFile, 15)
#write-host $IdTag_Year
}
Auriez-vous une idée ?
Merci par avance.
Marc.
Connexion ou Créer un compte pour participer à la conversation.
- ericlm128
- Hors Ligne
- Membre elite
Réduire
Plus d'informations
- Messages : 187
- Remerciements reçus 37
il y a 2 ans 9 mois - il y a 2 ans 9 mois #31190
par ericlm128
Réponse de ericlm128 sur le sujet Lecture de tags - Problème de format ?
La méthode Namespace de l'objet COM Shell.Application attend un chemin valide et pas un objet System.IO.DirectoryInfo
Voir la documentation : docs.microsoft.com/fr-fr/windows/win32/shell/shell-namespace
Voir la documentation : docs.microsoft.com/fr-fr/windows/win32/shell/shell-namespace
...
$objFolder = $objShell.Namespace($MyFileDirectory.FullName)
...
Dernière édition: il y a 2 ans 9 mois par ericlm128.
Connexion ou Créer un compte pour participer à la conversation.
- Marc VAN DAMME
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 5
- Remerciements reçus 0
il y a 2 ans 8 mois #31198
par Marc VAN DAMME
Réponse de Marc VAN DAMME sur le sujet Lecture de tags - Problème de format ?
Bonjour à tous,
Merci ericlm128 pour ta réponse. J'ai fini par trouver la solution à mon pb qui était un souci de type de donnée : le format chaine de caractère devait-être spécifié sous la forme [string]$<nom de la variable>
Voici mon code :
CLS
Clear-Host
#Répertoire MP3 à lire
$dataFolder = Set-Location "E:\_Singles"
$MyFolder = Get-ChildItem -Path $dataFolder -Recurse -File | Where-Object {$_.Name -match 'mp3$'}
foreach ($MyFile in $MyFolder)
{
Write-Host $MyFile
[string]$MyFileName = $MyFile.Name
write-host $MyFileName
$MyFileFullName = $MyFile.fullname
write-host $MyFileFullName
write-host $MyFile.directory
[string]$MyFileDirectory = $MyFile.directory
write-host $MyFileDirectory
$objShell = New-Object -ComObject Shell.Application
$objFolder = $objShell.Namespace($MyFileDirectory)
$objFile = $objFolder.ParseName($MyFileName)
$IdTag_Year = $objFolder.GetDetailsOf($objFile, 15)
#write-host $IdTag_Year
}
Problème résolu
Bonne fin de journée.
Marc
Merci ericlm128 pour ta réponse. J'ai fini par trouver la solution à mon pb qui était un souci de type de donnée : le format chaine de caractère devait-être spécifié sous la forme [string]$<nom de la variable>
Voici mon code :
CLS
Clear-Host
#Répertoire MP3 à lire
$dataFolder = Set-Location "E:\_Singles"
$MyFolder = Get-ChildItem -Path $dataFolder -Recurse -File | Where-Object {$_.Name -match 'mp3$'}
foreach ($MyFile in $MyFolder)
{
Write-Host $MyFile
[string]$MyFileName = $MyFile.Name
write-host $MyFileName
$MyFileFullName = $MyFile.fullname
write-host $MyFileFullName
write-host $MyFile.directory
[string]$MyFileDirectory = $MyFile.directory
write-host $MyFileDirectory
$objShell = New-Object -ComObject Shell.Application
$objFolder = $objShell.Namespace($MyFileDirectory)
$objFile = $objFolder.ParseName($MyFileName)
$IdTag_Year = $objFolder.GetDetailsOf($objFile, 15)
#write-host $IdTag_Year
}
Problème résolu
Bonne fin de journée.
Marc
Connexion ou Créer un compte pour participer à la conversation.
- ericlm128
- Hors Ligne
- Membre elite
Réduire
Plus d'informations
- Messages : 187
- Remerciements reçus 37
il y a 2 ans 8 mois - il y a 2 ans 8 mois #31202
par ericlm128
Réponse de ericlm128 sur le sujet Lecture de tags - Problème de format ?
Tu effectue un cast implicite de l'objet FileInfo en string qui utilise la méthode ToString (définit dans l'objet). Par "chance" la méthode te retourne un chemin valide.
La propriété est déjà en string et son contenu correspond à ce que tu cherche.
Tu devrait être plus explicite, la vrai solution est celle que je te propose.
docs.microsoft.com/fr-fr/dotnet/api/syst...ostring?view=net-5.0
Important
La chaîne retournée par la ToString méthode représente le chemin d’accès qui a été passé au FileInfo constructeur. Au lieu d’appeler la ToString méthode, vous devez récupérer la valeur de l’une des propriétés suivantes, en fonction de votre intention :
• Name, pour récupérer le nom du fichier, sans aucune information de chemin d’accès parent.
• FullName, pour récupérer le chemin d’accès complet du fichier.
La propriété est déjà en string et son contenu correspond à ce que tu cherche.
Tu devrait être plus explicite, la vrai solution est celle que je te propose.
docs.microsoft.com/fr-fr/dotnet/api/syst...ostring?view=net-5.0
Important
La chaîne retournée par la ToString méthode représente le chemin d’accès qui a été passé au FileInfo constructeur. Au lieu d’appeler la ToString méthode, vous devez récupérer la valeur de l’une des propriétés suivantes, en fonction de votre intention :
• Name, pour récupérer le nom du fichier, sans aucune information de chemin d’accès parent.
• FullName, pour récupérer le chemin d’accès complet du fichier.
Dernière édition: il y a 2 ans 8 mois par ericlm128.
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.074 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Lecture de tags - Problème de format ?