Question
probleme de lecture de fichier
- Anthony T.
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 43
- Remerciements reçus 0
il y a 16 ans 1 mois #6114
par Anthony T.
probleme de lecture de fichier a été créé par Anthony T.
Bonjour,
Voilà, j'ai crée un nouveau fichier avec cette ligne :
[code:1]
new-item -Path \"C:\Users\Administrateur\Desktop\RC Script\temporaire.Txt\" –Itemtype file -force[/code:1]Ensuite j'essaie de lire avec la commande findstr une partie de ce document :
[code:1]
$test = findstr /C:\"(0%)\" \"C:\Users\Administrateur\Desktop\RC Script\Temporaire.txt\"[/code:1]
Je souhaite afficher sur l'écran la valeur que contient cette variable :
write-host \"$test\"
Celle ci est nulle dans ce cas.
Par contre si je crée le document Temporaire.txt à l'aide du clic droit -> nouveau -> document texte, et que je copie colle les informations contenus dans le fichier temporaire générer précédement.Quand j'utilise ma fonction de lecture findstr ... celle ci trouve la phrase contenant le (0%) et me l'affiche. avec le write-host \"$test\" .
Je ne comprend pas quel peut être la différence entre les deux modes de création de fichier? une explication ? pour palier ce problème. Merci d'avance et bon week end à vous<br><br>Message édité par: Arnaud, à: 7/02/10 00:30
Voilà, j'ai crée un nouveau fichier avec cette ligne :
[code:1]
new-item -Path \"C:\Users\Administrateur\Desktop\RC Script\temporaire.Txt\" –Itemtype file -force[/code:1]Ensuite j'essaie de lire avec la commande findstr une partie de ce document :
[code:1]
$test = findstr /C:\"(0%)\" \"C:\Users\Administrateur\Desktop\RC Script\Temporaire.txt\"[/code:1]
Je souhaite afficher sur l'écran la valeur que contient cette variable :
write-host \"$test\"
Celle ci est nulle dans ce cas.
Par contre si je crée le document Temporaire.txt à l'aide du clic droit -> nouveau -> document texte, et que je copie colle les informations contenus dans le fichier temporaire générer précédement.Quand j'utilise ma fonction de lecture findstr ... celle ci trouve la phrase contenant le (0%) et me l'affiche. avec le write-host \"$test\" .
Je ne comprend pas quel peut être la différence entre les deux modes de création de fichier? une explication ? pour palier ce problème. Merci d'avance et bon week end à vous<br><br>Message édité par: Arnaud, à: 7/02/10 00:30
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 16 ans 1 mois #6118
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:probleme de lecture de fichier
insqnz écrit:
Utilise le cmdlet Select-String.
[code:1]
#Get-content -encoding
# Unknown, String, Unicode , Byte , BigEndianUnicode , UTF8 , UTF7 , Ascii
#http://www.vistax64.com/powershell/22574-reading-bom-text-files.html
function Get-Encoding ([string] $path,
[switch] $displayKnownBoms)
{
begin
{
$KnownEncodings=@{
\"EFBBBF\" =\"Utf8\";
\"FEFF\" =\"UTF-16 Big Endian\";
\"FFFE\" =\"UTF-16 Little Endian\";
\"0000FEFF\" =\"UTF-32 Big Endian\";
\"FFFE0000\" =\"UTF-32 Little Endian\";
\"0EFEFF\" =\"SCSU\";
\"DD736673\" =\"UTF-EBCDIC\";
\"FBEE28\" =\"BOCU-1\";
\"2B2F76382D\"=\"UTF-7\";
\"2B2F7638\" =\"UTF-7\";
\"2B2F7639\" =\"UTF-7\";
\"2B2F762B\" =\"UTF-7\";
\"2B2F762F\" =\"UTF-7\";
}
function ShowKnownBoms()
{
\"\"
\"Known Byte Order Marks\"
\"
\"
$KnownEncodings.GetEnumerator() | Select
@{Name=\"Encoding\";Expr={$_.Value}},
@{Name=\"Representation\";Expr={$_.Name}} | Sort Encoding
}
function ProcessFile([string] $fileToProcess)
{
$fileToProcess=Resolve-Path $fileToProcess
if(!(Test-Path $fileToProcess -pathType Leaf)) {return}
$bom=Get-Content -totalCount 5 -path $fileToProcess -encoding Byte | %{ \"{0:«»X2}\" -f $_ }
if(!$bom){return}
$bom=[String]::Join(\"\", $bom)
$result=1 | Select Encoding, Representation, Path
$result.Path=$fileToProcess
foreach($knownBom in $KnownEncodings.Keys)
{
if($bom.StartsWith($knownBom))
{
$result.Representation=$knownBom
$result.Encoding=$KnownEncodings[$knownBom]
return $result
}
}
$result.Representation=$bom
$result.Encoding=\"Unknown Byte Order Mark\"
return $result
}
}
process
{
if($_)
{
if($_ -is [System.IO.FileInfo])
{
ProcessFile($_.FullName)
}
else
{
ProcessFile($_)
}
}
}
end
{
if($path)
{
ProcessFile($path)
}
if($displayKnownBoms)
{
ShowKnownBoms
}
}
}
[/code:1]
Peut être un pb d'encodage du fichier.Je ne comprend pas quel peut être la différence entre les deux modes de création de fichier?
Utilise le cmdlet Select-String.
[code:1]
#Get-content -encoding
# Unknown, String, Unicode , Byte , BigEndianUnicode , UTF8 , UTF7 , Ascii
#http://www.vistax64.com/powershell/22574-reading-bom-text-files.html
function Get-Encoding ([string] $path,
[switch] $displayKnownBoms)
{
begin
{
$KnownEncodings=@{
\"EFBBBF\" =\"Utf8\";
\"FEFF\" =\"UTF-16 Big Endian\";
\"FFFE\" =\"UTF-16 Little Endian\";
\"0000FEFF\" =\"UTF-32 Big Endian\";
\"FFFE0000\" =\"UTF-32 Little Endian\";
\"0EFEFF\" =\"SCSU\";
\"DD736673\" =\"UTF-EBCDIC\";
\"FBEE28\" =\"BOCU-1\";
\"2B2F76382D\"=\"UTF-7\";
\"2B2F7638\" =\"UTF-7\";
\"2B2F7639\" =\"UTF-7\";
\"2B2F762B\" =\"UTF-7\";
\"2B2F762F\" =\"UTF-7\";
}
function ShowKnownBoms()
{
\"\"
\"Known Byte Order Marks\"
\"
\"
$KnownEncodings.GetEnumerator() | Select
@{Name=\"Encoding\";Expr={$_.Value}},
@{Name=\"Representation\";Expr={$_.Name}} | Sort Encoding
}
function ProcessFile([string] $fileToProcess)
{
$fileToProcess=Resolve-Path $fileToProcess
if(!(Test-Path $fileToProcess -pathType Leaf)) {return}
$bom=Get-Content -totalCount 5 -path $fileToProcess -encoding Byte | %{ \"{0:«»X2}\" -f $_ }
if(!$bom){return}
$bom=[String]::Join(\"\", $bom)
$result=1 | Select Encoding, Representation, Path
$result.Path=$fileToProcess
foreach($knownBom in $KnownEncodings.Keys)
{
if($bom.StartsWith($knownBom))
{
$result.Representation=$knownBom
$result.Encoding=$KnownEncodings[$knownBom]
return $result
}
}
$result.Representation=$bom
$result.Encoding=\"Unknown Byte Order Mark\"
return $result
}
}
process
{
if($_)
{
if($_ -is [System.IO.FileInfo])
{
ProcessFile($_.FullName)
}
else
{
ProcessFile($_)
}
}
}
end
{
if($path)
{
ProcessFile($path)
}
if($displayKnownBoms)
{
ShowKnownBoms
}
}
}
[/code:1]
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
il y a 16 ans 1 mois #6123
par Arnaud Petitjean
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Réponse de Arnaud Petitjean sur le sujet Re:probleme de lecture de fichier
Hello !
Pour ma part je n'arrive pas à récuperer une seule valeur avec FindStr. Je te recommande plutot d'utiliser la commande native Select-String et là tout fonctionne, et ce quel que soit l'encodage.
Ceci étant dit, je n'ai pas remarqué de problème d'encodage lors de la création des fichiers. Que ce soit de l'une ou l'autre manière, dans les 2 cas les l'encodage des fichiers est ANSI. Une façon simple de le savoir est d'ouvrir le fichier texte dans le Notepad et de faire \"Enregistrer Sous...\", et tout en bas de la fenetre tu trouveras le type d'encodage du fichier.
Arnaud
Pour ma part je n'arrive pas à récuperer une seule valeur avec FindStr. Je te recommande plutot d'utiliser la commande native Select-String et là tout fonctionne, et ce quel que soit l'encodage.
Ceci étant dit, je n'ai pas remarqué de problème d'encodage lors de la création des fichiers. Que ce soit de l'une ou l'autre manière, dans les 2 cas les l'encodage des fichiers est ANSI. Une façon simple de le savoir est d'ouvrir le fichier texte dans le Notepad et de faire \"Enregistrer Sous...\", et tout en bas de la fenetre tu trouveras le type d'encodage du fichier.
Arnaud
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
- Anthony T.
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 43
- Remerciements reçus 0
il y a 16 ans 1 mois #6127
par Anthony T.
Réponse de Anthony T. sur le sujet Re:probleme de lecture de fichier
Parfait la méthode Select-string marche !! merci beaucoup !
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.098 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- probleme de lecture de fichier