Question Lecture de fichier texte dans un répertoire

Plus d'informations
il y a 11 ans 11 mois #17331 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

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 11 mois #17332 par William
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 ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 11 mois #17336 par SiSMik
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

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 11 mois #17337 par ANTRI Mohamed
Hello,

Si tu pars d'un dossier simple en effet comme le dit benduru tu peux faire directement :

[code:1]C:\&gt; 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:\&gt; 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:\&gt; 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.

Plus d'informations
il y a 11 ans 11 mois #17338 par William
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 \&quot;Début du script :\&quot;

#On défninit l'emplacement du répertoire servant de boite au lettre
$repertoire = \&quot;c:\travail\Stage Bertin\PAGE WEB_timken\BoiteAuLettre\\&quot;

#On définit l'emplacement ou se trouve le script d'analyse
$chemin_script = \&quot;c:\travail\Stage Bertin\SCRIPT\TIMKEN\Scripts\Saa8_timken.ps1\&quot;

#Si le dossier BoiteAuLettre consistant à recevoir les saisies période n'éxiste pas, on le crée
If (-not (Test-Path $repertoire)) {
Write-Host \&quot;Création du dossier BoiteAuLettre\&quot;
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 \&quot;Lecture d'une lettre : $fichier\&quot;
}}

[/code:1]

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 11 mois #17354 par SiSMik
Salut,

Tu peux essayer ça ?

[code:1]Function Get-LettreFichier {
param (
$repertoire = \&quot;c:\travail\Stage Bertin\PAGE WEB_timken\BoiteAuLettre\\&quot;,
$chemin_script = \&quot;c:\travail\Stage Bertin\SCRIPT\TIMKEN\Scripts\Saa8_timken.ps1\&quot;
)

#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.046 secondes
Propulsé par Kunena