Question
Lecture de fichier texte dans un répertoire
- William
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 8
- Remerciements reçus 0
il y a 11 ans 11 mois #17331
par William
Lecture de fichier texte dans un répertoire a été créé par William
Bonjour,
J'ai besoin de récupérer le contenu de plusieurs fichiers texte qui sont dans un dossier.
Je débute en PowerShell donc j'aurai besoin de vos lumières !
Merci d'avance
J'ai besoin de récupérer le contenu de plusieurs fichiers texte qui sont dans un dossier.
Je débute en PowerShell donc j'aurai besoin de vos lumières !
Merci d'avance
Connexion ou Créer un compte pour participer à la conversation.
- William
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 8
- Remerciements reçus 0
il y a 11 ans 11 mois #17332
par William
Réponse de William sur le sujet Re:Lecture de fichier texte dans un répertoire
Problème résolu :
foreach ($file in $dossier) {
$fichier = Get-Content ($file) -Include *.txt
Write-Host \"Lecture d'une lettre : $fichier\"
}
Cependant, le Host m'affiche une erreur quand il rencontre un fichier autre que .txt , j'aimerai qu'il n'affiche pas d'erreur ?
foreach ($file in $dossier) {
$fichier = Get-Content ($file) -Include *.txt
Write-Host \"Lecture d'une lettre : $fichier\"
}
Cependant, le Host m'affiche une erreur quand il rencontre un fichier autre que .txt , j'aimerai qu'il n'affiche pas d'erreur ?
Connexion ou Créer un compte pour participer à la conversation.
- SiSMik
- Hors Ligne
- Membre platinium
-
Réduire
Plus d'informations
- Messages : 492
- Remerciements reçus 0
il y a 11 ans 11 mois #17336
par SiSMik
Réponse de SiSMik sur le sujet Re:Lecture de fichier texte dans un répertoire
Salut,
Une piste peut être..
[code:1]
Get-ChildItem $dossier -Include *.txt | % {
$Output = Get-Content $_
Write-Host \"Lecture d'une lettre : $Output\"
}[/code:1]
Bien qu'une explication sur ce que tu souhaites faire serait utile pour qu'on t'aide.
Cordialement,<br><br>Message édité par: benduru, à: 10/04/14 07:03
Une piste peut être..
[code:1]
Get-ChildItem $dossier -Include *.txt | % {
$Output = Get-Content $_
Write-Host \"Lecture d'une lettre : $Output\"
}[/code:1]
Bien qu'une explication sur ce que tu souhaites faire serait utile pour qu'on t'aide.
Cordialement,<br><br>Message édité par: benduru, à: 10/04/14 07:03
Connexion ou Créer un compte pour participer à la conversation.
- ANTRI Mohamed
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 124
- Remerciements reçus 0
il y a 11 ans 11 mois #17337
par ANTRI Mohamed
Réponse de ANTRI Mohamed sur le sujet Re:Lecture de fichier texte dans un répertoire
Hello,
Si tu pars d'un dossier simple en effet comme le dit benduru tu peux faire directement :
[code:1]C:\> Get-ChildItem *.txt -path C:\[/code:1]
en te plaçant directement à la racine du dossier que tu souhaites traiter. Comme tu le vois dans mon exemple je me suis placé à la racine du disque C.
Ensuite si ton dossier contient encore d'autres dossier et que tu souhaites aussi les traiter alors tu utilises le paramètres [code:1] -recurse [/code:1] pour traiter l'arborescence.
[code:1]C:\> Get-ChildItem *.txt -path C:\ -Recurse [/code:1]
Enfin si tu veux éviter les messages d'erreurs tu peux utiliser [code:1]-erroraction silentlycontinue[/code:1]
[code:1]C:\> Get-ChildItem *.txt -path C:\ -Recurse -ErrorAction silentlycontinue[/code:1]
je ne suis pas fan de ne pas afficher les erreurs car par moment tu ne sais plus pourquoi cela n'a pas fonctionné. Je préfère traiter moi même les exceptions afin que tu puisses maîtriser ton code.
J'espère t'avoir aidé. N'hésites pas à revenir vers nous.
Si tu pars d'un dossier simple en effet comme le dit benduru tu peux faire directement :
[code:1]C:\> Get-ChildItem *.txt -path C:\[/code:1]
en te plaçant directement à la racine du dossier que tu souhaites traiter. Comme tu le vois dans mon exemple je me suis placé à la racine du disque C.
Ensuite si ton dossier contient encore d'autres dossier et que tu souhaites aussi les traiter alors tu utilises le paramètres [code:1] -recurse [/code:1] pour traiter l'arborescence.
[code:1]C:\> Get-ChildItem *.txt -path C:\ -Recurse [/code:1]
Enfin si tu veux éviter les messages d'erreurs tu peux utiliser [code:1]-erroraction silentlycontinue[/code:1]
[code:1]C:\> Get-ChildItem *.txt -path C:\ -Recurse -ErrorAction silentlycontinue[/code:1]
je ne suis pas fan de ne pas afficher les erreurs car par moment tu ne sais plus pourquoi cela n'a pas fonctionné. Je préfère traiter moi même les exceptions afin que tu puisses maîtriser ton code.
J'espère t'avoir aidé. N'hésites pas à revenir vers nous.
Connexion ou Créer un compte pour participer à la conversation.
- William
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 8
- Remerciements reçus 0
il y a 11 ans 11 mois #17338
par William
Réponse de William sur le sujet Re:Lecture de fichier texte dans un répertoire
Merci pour vos réponses.
Mon problème est le suivant. Mon script doit lire le contenu de fichier texte contenu dans un dossier.
Pour chacun de ces fichiers textes, je dois lancer un autre script powershell avec comme argument la première ligne du fichier texte.
Mon code pour le moment:
[code:1]
#On nettoie la console
Clear
Write-Host \"Début du script :\"
#On défninit l'emplacement du répertoire servant de boite au lettre
$repertoire = \"c:\travail\Stage Bertin\PAGE WEB_timken\BoiteAuLettre\\"
#On définit l'emplacement ou se trouve le script d'analyse
$chemin_script = \"c:\travail\Stage Bertin\SCRIPT\TIMKEN\Scripts\Saa8_timken.ps1\"
#Si le dossier BoiteAuLettre consistant à recevoir les saisies période n'éxiste pas, on le crée
If (-not (Test-Path $repertoire)) {
Write-Host \"Création du dossier BoiteAuLettre\"
New-Item $repertoire -ItemType Directory
}
$dossier = Get-ChildItem $repertoire
#Pour chaque fichier texte contenu dans la boite au lettre
foreach ($file in $dossier) {
$fichier = Get-Content ($file)
if($fichier){
Write-Host \"Lecture d'une lettre : $fichier\"
}}
[/code:1]
Mon problème est le suivant. Mon script doit lire le contenu de fichier texte contenu dans un dossier.
Pour chacun de ces fichiers textes, je dois lancer un autre script powershell avec comme argument la première ligne du fichier texte.
Mon code pour le moment:
[code:1]
#On nettoie la console
Clear
Write-Host \"Début du script :\"
#On défninit l'emplacement du répertoire servant de boite au lettre
$repertoire = \"c:\travail\Stage Bertin\PAGE WEB_timken\BoiteAuLettre\\"
#On définit l'emplacement ou se trouve le script d'analyse
$chemin_script = \"c:\travail\Stage Bertin\SCRIPT\TIMKEN\Scripts\Saa8_timken.ps1\"
#Si le dossier BoiteAuLettre consistant à recevoir les saisies période n'éxiste pas, on le crée
If (-not (Test-Path $repertoire)) {
Write-Host \"Création du dossier BoiteAuLettre\"
New-Item $repertoire -ItemType Directory
}
$dossier = Get-ChildItem $repertoire
#Pour chaque fichier texte contenu dans la boite au lettre
foreach ($file in $dossier) {
$fichier = Get-Content ($file)
if($fichier){
Write-Host \"Lecture d'une lettre : $fichier\"
}}
[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- SiSMik
- Hors Ligne
- Membre platinium
-
Réduire
Plus d'informations
- Messages : 492
- Remerciements reçus 0
il y a 11 ans 11 mois #17354
par SiSMik
Réponse de SiSMik sur le sujet Re:Lecture de fichier texte dans un répertoire
Salut,
Tu peux essayer ça ?
[code:1]Function Get-LettreFichier {
param (
$repertoire = \"c:\travail\Stage Bertin\PAGE WEB_timken\BoiteAuLettre\\",
$chemin_script = \"c:\travail\Stage Bertin\SCRIPT\TIMKEN\Scripts\Saa8_timken.ps1\"
)
#Si le dossier BoiteAuLettre consistant à recevoir les saisies période n'éxiste pas, on le crée
#
# Si ce répertoire n'existe pas, ta fonction n'a aucun intérêt d'exister, car elle ne contiendra aucun fichier forcément....
#
#If (!(Test-Path $repertoire)) {
# New-Item $repertoire -ItemType Directory
#}
# Je liste les fichiers uniquement dans le répertoire.
Get-ChildItem $repertoire -File | Foreach {
# Et pour chacun, j'exécute le script avec comme paramètre la première ligne du fichier
. $chemin_script -argument1 (Get-Content $_)[0]
}
}
[/code:1]
Tu peux essayer ça ?
[code:1]Function Get-LettreFichier {
param (
$repertoire = \"c:\travail\Stage Bertin\PAGE WEB_timken\BoiteAuLettre\\",
$chemin_script = \"c:\travail\Stage Bertin\SCRIPT\TIMKEN\Scripts\Saa8_timken.ps1\"
)
#Si le dossier BoiteAuLettre consistant à recevoir les saisies période n'éxiste pas, on le crée
#
# Si ce répertoire n'existe pas, ta fonction n'a aucun intérêt d'exister, car elle ne contiendra aucun fichier forcément....
#
#If (!(Test-Path $repertoire)) {
# New-Item $repertoire -ItemType Directory
#}
# Je liste les fichiers uniquement dans le répertoire.
Get-ChildItem $repertoire -File | Foreach {
# Et pour chacun, j'exécute le script avec comme paramètre la première ligne du fichier
. $chemin_script -argument1 (Get-Content $_)[0]
}
}
[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.049 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Lecture de fichier texte dans un répertoire