Question Supprimer caratère Hexa

Plus d'informations
il y a 17 ans 4 jours #4350 par physyo
Réponse de physyo sur le sujet Re:Supprimer caratère Hexa
Hello

Je te remercie pour ta réponse. Désolé de ne pas t'avoir répondu avant mais j'étais en vacances.

J'ai bien regardé ton script mais il y a quelques truc qui ne fonctionne pas comme par exemple:
[code:1] Get-Content \"$CurrentFile\" -Encoding byte | Remove-LastChar $ASCIICode | set-content C:\test.txt -Encoding oem[/code:1]
Il faut utiliser Out-file nan ? Mais quand je l'utilise Out-file le fichier de sorti reste en Byte. Une idée ?

2ème chose pourrais-tu m'expliquer comment fonctionne ceci car j'ai du mal à le mettre en place
[code:1] $TempFile = [IO.Path]::GetTempFileName()
Move-Item -Path \"$TempFile\" -Destination \"$CurrentFile\"
Del \"$TempFile[/code:1]

Merci de pour ton aide.

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

Plus d'informations
il y a 17 ans 4 jours #4352 par Laurent Dardenne
physyo écrit:

J'ai bien regardé ton script mais il y a quelques truc qui ne fonctionne pas

Si tu mets à disposition un fichier de test sans données confidentielles ce sera plus facile.
physyo écrit:

2ème chose pourrais-tu m'expliquer comment fonctionne ceci car j'ai du mal à le mettre en place

Le système crée un fichier temporaire de nom unique :
[code:1] $TempFile = [System.IO.Path]::GetTempFileName()[/code:1]
Déplace et renomme le fichier temporaire avec le nom du fichier courant. Je fait la supposition que le fichier d'origine n'a pas a être sauvegardé, à toi de vérifier si cela correspond à ton usage :
[code:1]
Move-Item -Path \"$TempFile\" -
[/code:1]Destination \"$CurrentFile\"
La dernière instruction n'est pas nécessaire :
[code:1]
# Del \&quot;$TempFile[/code:1]<br><br>Message édité par: Laurent Dardenne, à: 19/03/09 14:15

Tutoriels PowerShell

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

Plus d'informations
il y a 17 ans 2 jours #4395 par physyo
Réponse de physyo sur le sujet Re:Supprimer caratère Hexa
Salut

Merci pour ton explication.

Je te joins un extrait du fichier pour que se sois plus claire pour toi

La cmdlet out-file dois modifier le \&quot;é\&quot; de Réf en \&quot;,\&quot;
puis supprimé le caractère hexa

J'espère que je suis claire pour toi sinon je suis à t'as disposition Merci

La pièce jointe fichier.txt est absente ou indisponible

Pièces jointes :

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

Plus d'informations
il y a 17 ans 2 jours #4399 par Laurent Dardenne
Effectivement l'approche autour d'un tableau de byte n'était pas correcte. Donc changement cap, on utilise un tableau de string et la recherche se fait à l'aide d'une expression régulière. le principe du filtre ne change pas.
[code:1]
function Remove-LastString([String]$Match){
#Supprime le dernier élément de la collection reçue via le pipeline
#Recoit un tableau de String

#Une fonction sans bloc (begin, process, end) est considérée comme
#une fonction déclarant uniquement le bloc End
#Dans ce cas on attend de recevoir tous les objets du pipeline, issu du segment précédent,
#avant de continuer le traitement.
#Tous les éléments sont accessible dans la variable automatique $input, accessible uniquement
#dans le bloc End
#Par exemple pour trier une collection on doit connaitre auparavant l'ensemble de ces éléments.

$ArrayOfString=@($input) #Cast de la varaible $input en un tableau. A l'origine $input est une énumération, pas une collection indexée
$LastItem=$ArrayOfString.Count-1

#Test si la dernière ligne contient la chaîne recherchée
if ($ArrayOfString[$LastItem] -match \&quot;^\$($match)$\&quot;«»)
#Réemet tous les élements sauf le dernier
{ $ArrayOfString[0..($LastItem-1)] }
else
#Réemet tous les élements
{ $ArrayOfString }
}

#cast (change le type)d'un nombre hexa en un caractère puis en une string.
$StringToMatch=[string][char]0x1C
$CurrentFile=\&quot;g:\temp\fichier.txt\&quot;

$TempFile = [IO.Path]::GetTempFileName()
#On cast le résultat de Get-Content pour obtenir un tableau de string au lieu d'un tableau d'objet
(Get-Content \&quot;$CurrentFile\&quot;«») -as [String[]]| Remove-LastString $StringToMatch | Out-File \&quot;$TempFile\&quot; -Encoding oem
type $TempFile
# Attention
Move-Item -Path \&quot;$TempFile\&quot; -Destination \&quot;$CurrentFile\&quot;
[/code:1]
La dernière instruction nécessite qq contrôle préliminaire si on recopie le fichier dans le même répertoire. Je te laisse faire.

Ici

2 Réf Cde Client

est transformé en

2 R'f Cde Client

<br><br>Message édité par: Laurent Dardenne, à: 19/03/09 15:03

Tutoriels PowerShell

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

Plus d'informations
il y a 16 ans 11 mois #4429 par physyo
Réponse de physyo sur le sujet Re:Supprimer caratère Hexa
Nickel ça marche très bien je te remercie pour ton aide sans toi c'était pas possible.

Mais j'ai néanmoins un dernier problème pour récupérer la nom du fichier.
J'ai du mal à trouver comment je dois placer la variable $_.Fullname dans mon script.

Merci

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

Plus d'informations
il y a 16 ans 11 mois #4430 par Laurent Dardenne
physyo écrit:

J'ai du mal à trouver comment je dois placer la variable $_.Fullname dans mon script.

Bah moi j'ai du mal à lire le script dont tu parles :P

Si tu as rédigé ton \&quot;scénario\&quot;, comme je te le conseillais dans mes premiers posts, tu devrais trouver la réponse.
Découper les actions en plusieurs segment de pipeline.

Tutoriels PowerShell

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

Temps de génération de la page : 0.079 secondes
Propulsé par Kunena