Question
Supprimer caratère Hexa
- physyo
- Auteur du sujet
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 22
- Remerciements reçus 0
il y a 15 ans 3 semaines #4460
par physyo
Réponse de physyo sur le sujet Re:Supprimer caratère Hexa
Toujours le même résultat.
Le nom du fichier est redevenu tmp*.tmp
Quand je lance le Get-Content \"CurrentFile\" ...
c'est pas la que je dois prendre la valeur du nom avec $_.Fullname ?
je devrai faire quelques chose du genre
[code:1](Get-Content \"$CurrentFile $($_.Fullname)\"«») -as [String[]] | Remove-LastString $StringToMatch | Out-File \"$TempFile\" -Encoding oem
type $TempFile
Move-Item -Path \"$TempFile\" -Destination \"c:\fac_ged\ok\$($_.FullName)\"
}[/code:1]
??
Le nom du fichier est redevenu tmp*.tmp
Quand je lance le Get-Content \"CurrentFile\" ...
c'est pas la que je dois prendre la valeur du nom avec $_.Fullname ?
je devrai faire quelques chose du genre
[code:1](Get-Content \"$CurrentFile $($_.Fullname)\"«») -as [String[]] | Remove-LastString $StringToMatch | Out-File \"$TempFile\" -Encoding oem
type $TempFile
Move-Item -Path \"$TempFile\" -Destination \"c:\fac_ged\ok\$($_.FullName)\"
}[/code:1]
??
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 15 ans 3 semaines #4462
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Supprimer caratère Hexa
physyo écrit:
Dans ta construction il y a une boucle et un pipeline.
La boucle utilise $Currentfile pour référencer l'elément courant, ici un fichier.
Le pipeline utilise le $_ pour désigner l'élément courant dans le pipe, ici un tableau de string.
Si tu souhaites utiliser le symbole $_ il doit bien provenir d'un pipeline. Et dans ce code, sans rentrer dans les détails,il n'y en a qu'un, c'est celui-ci:
[code:1](Get-Content \"$CurrentFile\"«») -as [String[]] | Remove-LastString $StringToMatch | Out-File \"$TempFile\" -Encoding oem [/code:1]
De plus c'est en interne que les cmdlet référencent l'objet courant, ici on ne précise pas le symbole $_. On passe des objets dans le pipe et PowerShell se débrouille.
Une fois ce pipeline terminé le symbole $_ n'existe plus, tu ne peux donc pas \"prendre la valeur du nom avec $_.Fullname\" en dehors du pipeline. Là tu fais de la magie
Je n'ai pas fait attention au code précédent où tu mixes les différentes constructions proposées jusqu'ici, ce doit être ce code :
[code:1]Move-Item -Path \"$TempFile\" -Destination \"c:\fac_ged\ok\$($CurrentFile.FullName)\" [/code:1]
Si tu ne comprends pas les principes de base, tu vas finir par te faire des trous dans le cerveau. Pour ça aussi PowerShell est assez puissant.
RalentiQuand je lance le Get-Content \"CurrentFile\" ...
c'est pas la que je dois prendre la valeur du nom avec $_.Fullname ?
Dans ta construction il y a une boucle et un pipeline.
La boucle utilise $Currentfile pour référencer l'elément courant, ici un fichier.
Le pipeline utilise le $_ pour désigner l'élément courant dans le pipe, ici un tableau de string.
Si tu souhaites utiliser le symbole $_ il doit bien provenir d'un pipeline. Et dans ce code, sans rentrer dans les détails,il n'y en a qu'un, c'est celui-ci:
[code:1](Get-Content \"$CurrentFile\"«») -as [String[]] | Remove-LastString $StringToMatch | Out-File \"$TempFile\" -Encoding oem [/code:1]
De plus c'est en interne que les cmdlet référencent l'objet courant, ici on ne précise pas le symbole $_. On passe des objets dans le pipe et PowerShell se débrouille.
Une fois ce pipeline terminé le symbole $_ n'existe plus, tu ne peux donc pas \"prendre la valeur du nom avec $_.Fullname\" en dehors du pipeline. Là tu fais de la magie
Je n'ai pas fait attention au code précédent où tu mixes les différentes constructions proposées jusqu'ici, ce doit être ce code :
[code:1]Move-Item -Path \"$TempFile\" -Destination \"c:\fac_ged\ok\$($CurrentFile.FullName)\" [/code:1]
Si tu ne comprends pas les principes de base, tu vas finir par te faire des trous dans le cerveau. Pour ça aussi PowerShell est assez puissant.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- physyo
- Auteur du sujet
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 22
- Remerciements reçus 0
il y a 15 ans 3 semaines #4469
par physyo
Réponse de physyo sur le sujet Re:Supprimer caratère Hexa
J'ai enfin réussi
[code:1]function Remove-LastString([String]$Match){
$ArrayOfString=@($input)
$LastItem=$ArrayOfString.Count-1
if ($ArrayOfString[$LastItem] -match \"^\$($match)$\"«»)
{ $ArrayOfString[0..($LastItem-1)] }
else
{ $ArrayOfString }
}
$StringToMatch=[string][char]0x1C
$Path= \"C:\FAC_GED\"
foreach ($CurrentFile in dir \"$Path\*.txt\"«»)
{
$TempFile = [IO.Path]::GetTempFileName()
(Get-Content \"$CurrentFile\"«») -as [String[]] |Remove-LastString $StringToMatch | Out-File \"$TempFile\" -Encoding oem
type $TempFile
Remove-item $CurrentFile
Move-Item -Path \"$TempFile\" -Destination \"$Currentfile\"
}[/code:1]
Mais je sais toujours pas comment je peux faire pour le mettre dans un autre répertoire
Peux-tu m'expliquer cette ligne
[code:1]Move-Item -Path \"$TempFile\" -Destination \"c:\fac_ged\ok\$($CurrentFile.FullName)\"[/code:1]
Car $Currentfile = au Chemin du fichier c'est bien ça ?
[code:1]function Remove-LastString([String]$Match){
$ArrayOfString=@($input)
$LastItem=$ArrayOfString.Count-1
if ($ArrayOfString[$LastItem] -match \"^\$($match)$\"«»)
{ $ArrayOfString[0..($LastItem-1)] }
else
{ $ArrayOfString }
}
$StringToMatch=[string][char]0x1C
$Path= \"C:\FAC_GED\"
foreach ($CurrentFile in dir \"$Path\*.txt\"«»)
{
$TempFile = [IO.Path]::GetTempFileName()
(Get-Content \"$CurrentFile\"«») -as [String[]] |Remove-LastString $StringToMatch | Out-File \"$TempFile\" -Encoding oem
type $TempFile
Remove-item $CurrentFile
Move-Item -Path \"$TempFile\" -Destination \"$Currentfile\"
}[/code:1]
Mais je sais toujours pas comment je peux faire pour le mettre dans un autre répertoire
Peux-tu m'expliquer cette ligne
[code:1]Move-Item -Path \"$TempFile\" -Destination \"c:\fac_ged\ok\$($CurrentFile.FullName)\"[/code:1]
Car $Currentfile = au Chemin du fichier c'est bien ça ?
Connexion ou Créer un compte pour participer à la conversation.
- physyo
- Auteur du sujet
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 22
- Remerciements reçus 0
il y a 15 ans 3 semaines #4470
par physyo
Réponse de physyo sur le sujet Re:Supprimer caratère Hexa
J'ai enfin réussi
[code:1]function Remove-LastString([String]$Match){
$ArrayOfString=@($input)
$LastItem=$ArrayOfString.Count-1
if ($ArrayOfString[$LastItem] -match \"^\$($match)$\"«»)
{ $ArrayOfString[0..($LastItem-1)] }
else
{ $ArrayOfString }
}
$StringToMatch=[string][char]0x1C
$Path= \"C:\FAC_GED\"
foreach ($CurrentFile in dir \"$Path\*.txt\"«»)
{
$TempFile = [IO.Path]::GetTempFileName()
(Get-Content \"$CurrentFile\"«») -as [String[]] |Remove-LastString $StringToMatch | Out-File \"$TempFile\" -Encoding oem
type $TempFile
Remove-item $CurrentFile
Move-Item -Path \"$TempFile\" -Destination \"$Currentfile\"
}[/code:1]
Mais je sais toujours pas comment je peux faire pour le mettre dans un autre répertoire
Peux-tu m'expliquer cette ligne
[code:1]Move-Item -Path \"$TempFile\" -Destination \"c:\fac_ged\ok\$($CurrentFile.FullName)\"[/code:1]
Car $Currentfile = au Chemin du fichier c'est bien ça ?
[code:1]function Remove-LastString([String]$Match){
$ArrayOfString=@($input)
$LastItem=$ArrayOfString.Count-1
if ($ArrayOfString[$LastItem] -match \"^\$($match)$\"«»)
{ $ArrayOfString[0..($LastItem-1)] }
else
{ $ArrayOfString }
}
$StringToMatch=[string][char]0x1C
$Path= \"C:\FAC_GED\"
foreach ($CurrentFile in dir \"$Path\*.txt\"«»)
{
$TempFile = [IO.Path]::GetTempFileName()
(Get-Content \"$CurrentFile\"«») -as [String[]] |Remove-LastString $StringToMatch | Out-File \"$TempFile\" -Encoding oem
type $TempFile
Remove-item $CurrentFile
Move-Item -Path \"$TempFile\" -Destination \"$Currentfile\"
}[/code:1]
Mais je sais toujours pas comment je peux faire pour le mettre dans un autre répertoire
Peux-tu m'expliquer cette ligne
[code:1]Move-Item -Path \"$TempFile\" -Destination \"c:\fac_ged\ok\$($CurrentFile.FullName)\"[/code:1]
Car $Currentfile = au Chemin du fichier c'est bien ça ?
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 15 ans 3 semaines #4471
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Supprimer caratère Hexa
physyo écrit:
Pour ceci
[code:1]\"c:\fac_ged\ok\$($CurrentFile.FullName)\"[/code:1]
Je m'adaptais à ton exemple partant de $_, mais c'est redondant car $CurrentFile est suffisant.
physyo écrit:
Je commence à m'embrouillerPeux-tu m'expliquer cette ligne
Pour ceci
[code:1]\"c:\fac_ged\ok\$($CurrentFile.FullName)\"[/code:1]
Je m'adaptais à ton exemple partant de $_, mais c'est redondant car $CurrentFile est suffisant.
physyo écrit:
Tu m'en vois raviJ'ai enfin réussi
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- physyo
- Auteur du sujet
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 22
- Remerciements reçus 0
il y a 15 ans 3 semaines #4472
par physyo
Réponse de physyo sur le sujet Re:Supprimer caratère Hexa
Moi aussi je suis embrouiller.
Se que je ne comprends pas c'est pourquoi l'on doit utiliser la variable $Currentfile dans le move alors que je veux changer la destination du fichier modifié.
Car dans le script qui fonctionne je fais un remove-item $currentfile pour supprimer le fichier source pour pouvoir écrire dans le même répertoire.
Se que je ne comprends pas c'est pourquoi l'on doit utiliser la variable $Currentfile dans le move alors que je veux changer la destination du fichier modifié.
Car dans le script qui fonctionne je fais un remove-item $currentfile pour supprimer le fichier source pour pouvoir écrire dans le même répertoire.
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.084 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Supprimer caratère Hexa