Question
convertir des fichiers au format unicode en ascii
- thaiboxing
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 1
- Remerciements reçus 0
il y a 14 ans 7 mois #10002
par thaiboxing
convertir des fichiers au format unicode en ascii a été créé par thaiboxing
Bonjour,
Je suis à la recherche d'une âme charitable pour m'aider faire cela.
Dans Powershell on ne traite que de l’Unicode, je dois donc convertir mais fichiers de mon répertoire par ce que, car j'ai constaté que la taille de mais fichiers de départ et ce d'arriver l’or du passe de mon scritp .ps1, passe du simple au double.
Mais fichier son des fichiers .scp voici un exmple:
SET FULLNAME=LOLLIA Tahyori
NET USE R: \\DATAUSER.XX.TCFR.xxx\%username% NOPERSISTENT
REGKEYSET HKEY_CURRENT_USER\Volatile Environment,HOMEDRIVE,\"R:\",REG_SZ
REGKEYSET HKEY_CURRENT_USER\Volatile Environment,HOMEPATH,\"\\DATAUSER.XX.TCFR.XXX\%username%\",REG_SZ
Voici le lien de la source du script que je veux combiner le miens qui se trouve un peux plus bas, le script de traitement .scp .
www.silogix.fr/blog-silogix/powershell-c...es-fichiers-oem.aspx
le script:
# Fonction de lecture du contenu d'un fichier OEM
Function Get-OemContent ([string]$OemFile)
{
# Utilisation de la classe \"Encoding\" pour effectuer la transformation de tableaux de caractères
$cultureInfoOEM = [system.Globalization.CultureInfo]::CurrentCulture.TextInfo.OEMCodePage
$encodingOEM = [System.text.Encoding]::GetEncoding($cultureInfoOEM)
# Ouverture du fichier
$FileStream = New-Object System.IO.FileStream ($OemFile, [System.IO.FileMode]::Open)
$StreamReader = New-Object System.IO.StreamReader ($FileStream, $encodingOEM)
[String[]]$tabChaineAnsi = @()
while (! $StreamReader.EndOfStream)
{
$chaineAnsi = $StreamReader.ReadLine();
$tabChaineAnsi += $chaineAnsi
}
$StreamReader.Close()
$FileStream.Close();
return $tabChaineAnsi
}
clear
$tabChaineAnsi = Get-OemContent c:\result1\t0125590.scp
# Traitement du tableau de chaines résultant
foreach ($chaine in $tabChaineAnsi)
{
if ($chaine.Length -ne 0)
{
$adresseInverse = $chaine -replace '([0-9]+).([0-9]+).([0-9]+).([0-9]+)','$4, $3, $2, $1'
$adresseInverse | Out-File c:\result2\t0125590.scp -Encoding OEM -Append
}
}
le script de traitement .scp:
Foreach($nomfic in Get-ChildItem C:\SCP\*.scp -Name)
{
$a = \"NEPER.XX.TCFR.XXX\"
$b = \"DATAUSER.XX.TCFR.XXX\"
$H = \"\\home\"
# Chargement du fichier dans une variable
$data = (Get-Content $nomfic)
$user = \"\%username%\"
# Premier remplacement
$data = ($data | foreach {$_ -replace \"$H\",$user})
# Deuxième remplacement
$data = ($data | foreach {$_ -replace \"$a\",\"$b\"})
# Sauvegarde du résultat dans un autre dossier \"je voudrais faire la conversion a se niveau avant l'enregistrement de $data.\"
$data > C:\result1\$nomfic
}
je vous remercie.
Message édité par: thaiboxing, à: 8/08/11 10:11
Message édité par: thaiboxing, à: 8/08/11 10:15<br><br>Message édité par: thaiboxing, à: 9/08/11 08:54
Je suis à la recherche d'une âme charitable pour m'aider faire cela.
Dans Powershell on ne traite que de l’Unicode, je dois donc convertir mais fichiers de mon répertoire par ce que, car j'ai constaté que la taille de mais fichiers de départ et ce d'arriver l’or du passe de mon scritp .ps1, passe du simple au double.
Mais fichier son des fichiers .scp voici un exmple:
SET FULLNAME=LOLLIA Tahyori
NET USE R: \\DATAUSER.XX.TCFR.xxx\%username% NOPERSISTENT
REGKEYSET HKEY_CURRENT_USER\Volatile Environment,HOMEDRIVE,\"R:\",REG_SZ
REGKEYSET HKEY_CURRENT_USER\Volatile Environment,HOMEPATH,\"\\DATAUSER.XX.TCFR.XXX\%username%\",REG_SZ
Voici le lien de la source du script que je veux combiner le miens qui se trouve un peux plus bas, le script de traitement .scp .
www.silogix.fr/blog-silogix/powershell-c...es-fichiers-oem.aspx
le script:
# Fonction de lecture du contenu d'un fichier OEM
Function Get-OemContent ([string]$OemFile)
{
# Utilisation de la classe \"Encoding\" pour effectuer la transformation de tableaux de caractères
$cultureInfoOEM = [system.Globalization.CultureInfo]::CurrentCulture.TextInfo.OEMCodePage
$encodingOEM = [System.text.Encoding]::GetEncoding($cultureInfoOEM)
# Ouverture du fichier
$FileStream = New-Object System.IO.FileStream ($OemFile, [System.IO.FileMode]::Open)
$StreamReader = New-Object System.IO.StreamReader ($FileStream, $encodingOEM)
[String[]]$tabChaineAnsi = @()
while (! $StreamReader.EndOfStream)
{
$chaineAnsi = $StreamReader.ReadLine();
$tabChaineAnsi += $chaineAnsi
}
$StreamReader.Close()
$FileStream.Close();
return $tabChaineAnsi
}
clear
$tabChaineAnsi = Get-OemContent c:\result1\t0125590.scp
# Traitement du tableau de chaines résultant
foreach ($chaine in $tabChaineAnsi)
{
if ($chaine.Length -ne 0)
{
$adresseInverse = $chaine -replace '([0-9]+).([0-9]+).([0-9]+).([0-9]+)','$4, $3, $2, $1'
$adresseInverse | Out-File c:\result2\t0125590.scp -Encoding OEM -Append
}
}
le script de traitement .scp:
Foreach($nomfic in Get-ChildItem C:\SCP\*.scp -Name)
{
$a = \"NEPER.XX.TCFR.XXX\"
$b = \"DATAUSER.XX.TCFR.XXX\"
$H = \"\\home\"
# Chargement du fichier dans une variable
$data = (Get-Content $nomfic)
$user = \"\%username%\"
# Premier remplacement
$data = ($data | foreach {$_ -replace \"$H\",$user})
# Deuxième remplacement
$data = ($data | foreach {$_ -replace \"$a\",\"$b\"})
# Sauvegarde du résultat dans un autre dossier \"je voudrais faire la conversion a se niveau avant l'enregistrement de $data.\"
$data > C:\result1\$nomfic
}
je vous remercie.
Message édité par: thaiboxing, à: 8/08/11 10:11
Message édité par: thaiboxing, à: 8/08/11 10:15<br><br>Message édité par: thaiboxing, à: 9/08/11 08:54
Connexion ou Créer un compte pour participer à la conversation.
- Gabriel
-
- Hors Ligne
- Membre elite
-
Réduire
Plus d'informations
- Messages : 248
- Remerciements reçus 1
il y a 14 ans 7 mois #10026
par Gabriel
Réponse de Gabriel sur le sujet Re:convertir des fichiers au format unicode en ascii
Bonjour Thaiboxing
pour un fichier
[code:1]
get-content .\fichierUNICODE.txt | out-file .\fichierASCII.txt -Encoding ASCII
[/code:1]
pour des fichiers
[code:1]
gci c:\temp -filter *.txt | %{get-content ($_.DirectoryName + \"\\" + $_.PSChildName) | out-file ($_.DirectoryName + \"\exports\\" + $_.PSChildName) -Encoding ASCII}
[/code:1]
ca doit pouvoir faire l'affaire.
apluch
ps: je sais que \"$_.DirectoryName + \"\\" + $_.PSChildName\" est plutot moche, mais si on met $_.PSPATH il sort un truc comme ça \"Microsoft.PowerShell.Core\FileSystem::C:\temp\toto.txt\" si quelqu'un connais un truc plus propre je suis preneur.
pour un fichier
[code:1]
get-content .\fichierUNICODE.txt | out-file .\fichierASCII.txt -Encoding ASCII
[/code:1]
pour des fichiers
[code:1]
gci c:\temp -filter *.txt | %{get-content ($_.DirectoryName + \"\\" + $_.PSChildName) | out-file ($_.DirectoryName + \"\exports\\" + $_.PSChildName) -Encoding ASCII}
[/code:1]
ca doit pouvoir faire l'affaire.
apluch
ps: je sais que \"$_.DirectoryName + \"\\" + $_.PSChildName\" est plutot moche, mais si on met $_.PSPATH il sort un truc comme ça \"Microsoft.PowerShell.Core\FileSystem::C:\temp\toto.txt\" si quelqu'un connais un truc plus propre je suis preneur.
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 14 ans 7 mois #10058
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:convertir des fichiers au format unicode en ascii
Salut,
tonic8 écrit:
$_.FullName ?
Sinon il existe des méthodes de manipulation de path ( au sens PowerShell), via $ExecutionContext.SessionState.Path :
[code:1]
gci c:\temp -filter *.txt |
Foreach {$ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($_.pspath)
[/code:1]<br><br>Message édité par: Laurent Dardenne, à: 17/08/11 15:34
tonic8 écrit:
ps: je sais que \"$_.DirectoryName + \"\\" + $_.PSChildName\" est plutot moche, mais si on met $_.PSPATH il sort un truc comme ça \"Microsoft.PowerShell.Core\FileSystem::C:\temp\toto.txt\" si quelqu'un connais un truc plus propre je suis preneur.
$_.FullName ?
Sinon il existe des méthodes de manipulation de path ( au sens PowerShell), via $ExecutionContext.SessionState.Path :
[code:1]
gci c:\temp -filter *.txt |
Foreach {$ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($_.pspath)
[/code:1]<br><br>Message édité par: Laurent Dardenne, à: 17/08/11 15:34
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.045 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- convertir des fichiers au format unicode en ascii