Question
[Résolu] Découpage ligne d'un fichier
- Elie
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 2
- Remerciements reçus 0
il y a 7 ans 5 mois #22573
par Elie
[Résolu] Découpage ligne d'un fichier a été créé par Elie
Bonjour à tous,
Je rencontre un problème sur un script powershell. En effet, j'ai un fichier texte qui ne fait qu'une ligne de X caractères. Seulement, j'aimerai scinder cette ligne en plusieurs de 120 caractères chacune (X variable, mais beaucoup trop pour le faire à la main). J'ai alors essayé cette solution :
[code:1]while($fic)
{
$x,$fic = ([char[]]$fic).where({$_},'Split',120)
$x -join '' >> temp.txt
}[/code:1]
Mais le problème, c'est qu'elle ne marche pas avec la version Powershell (2.0) de mon serveur. Il ne m'est également pas possible de mettre à jour Powershell.
Si quelqu'un a une idée ?
Cordialement,
PS => Le message d'erreur:
Message édité par: Kopter, à: 2/11/16 14:34<br><br>Message édité par: Kopter, à: 3/11/16 09:34
Je rencontre un problème sur un script powershell. En effet, j'ai un fichier texte qui ne fait qu'une ligne de X caractères. Seulement, j'aimerai scinder cette ligne en plusieurs de 120 caractères chacune (X variable, mais beaucoup trop pour le faire à la main). J'ai alors essayé cette solution :
[code:1]while($fic)
{
$x,$fic = ([char[]]$fic).where({$_},'Split',120)
$x -join '' >> temp.txt
}[/code:1]
Mais le problème, c'est qu'elle ne marche pas avec la version Powershell (2.0) de mon serveur. Il ne m'est également pas possible de mettre à jour Powershell.
Si quelqu'un a une idée ?
Cordialement,
PS => Le message d'erreur:
L'appel de la méthode a échoué parce que [System.Char[]] ne contient pas de méthode nommée « where ».
Au niveau de script.ps1 : 18 Caractère : 35
+ $x,$fic = ([char[]]$fic).where<<<< ({$_},'Split',120)
+ CategoryInfo : InvalidOperation: (where: String) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound
Message édité par: Kopter, à: 2/11/16 14:34<br><br>Message édité par: Kopter, à: 3/11/16 09:34
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 7 ans 5 mois #22575
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Découpage ligne d'un fichier
Salut,
Remplace .Where() par Where-Object {} et split par -Split et consulte la doc pour la taille.
Je n'ai pas testé...
Remplace .Where() par Where-Object {} et split par -Split et consulte la doc pour la taille.
Je n'ai pas testé...
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 28
- Remerciements reçus 0
il y a 7 ans 5 mois #22576
par Philippe
Réponse de Philippe sur le sujet Re:Découpage ligne d'un fichier
Salut,
Split de mémoire utilise un caractère de référence pour la séparation, non une taille.
J'ai fait ce code vite fait mais je peux me trompé et on doit pouvoir l'alléger
[code:1]clear
# creation d'une ligne de XXXX caracteres pour essais
$StringFile = \"\"
for ($i=1; $i -le 150; $i++) {
$StringFile += (65..90) + (97..122) | Get-Random -Count 1 | % {[char]$_}
}
Write-Host $StringFile
Write-Host \"
\"
# découpe de la ligne en 120 caracteres dans un tableau
$Length = 120
$Math = [Math]::Truncate($StringFile.Length / $Length)
If ($Math -eq ($StringFile.Length / $Length)) {
$Math--
}
$Array = @(0..$Math)
If ($StringFile.Length -gt $Length) {
$i = 0
Do {
$Array[$i] = $StringFile.Substring(0, $Length)
$StringFile = $StringFile.Substring($Length)
$i++
} while ($StringFile.Length -gt $Length)
}
$Array[-1] = $StringFile
# lecture du tableau
Foreach ($line in $Array) {
Write-Host $line
}
[/code:1]
a+<br><br>Message édité par: Mortasgus, à: 2/11/16 23:37
Split de mémoire utilise un caractère de référence pour la séparation, non une taille.
J'ai fait ce code vite fait mais je peux me trompé et on doit pouvoir l'alléger
[code:1]clear
# creation d'une ligne de XXXX caracteres pour essais
$StringFile = \"\"
for ($i=1; $i -le 150; $i++) {
$StringFile += (65..90) + (97..122) | Get-Random -Count 1 | % {[char]$_}
}
Write-Host $StringFile
Write-Host \"
\"
# découpe de la ligne en 120 caracteres dans un tableau
$Length = 120
$Math = [Math]::Truncate($StringFile.Length / $Length)
If ($Math -eq ($StringFile.Length / $Length)) {
$Math--
}
$Array = @(0..$Math)
If ($StringFile.Length -gt $Length) {
$i = 0
Do {
$Array[$i] = $StringFile.Substring(0, $Length)
$StringFile = $StringFile.Substring($Length)
$i++
} while ($StringFile.Length -gt $Length)
}
$Array[-1] = $StringFile
# lecture du tableau
Foreach ($line in $Array) {
Write-Host $line
}
[/code:1]
a+<br><br>Message édité par: Mortasgus, à: 2/11/16 23:37
Connexion ou Créer un compte pour participer à la conversation.
- Elie
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 2
- Remerciements reçus 0
il y a 7 ans 5 mois #22578
par Elie
Réponse de Elie sur le sujet Re:Découpage ligne d'un fichier
Bonjour.
Merci pour vos réponses.
Je poste la solution ici, au cas où :
[code:1][regex]::«»split($fic, '(.{X})') | ? {$_} #Avec X le nombre de caractères souhaités par ligne[/code:1]
Cordialement,
Merci pour vos réponses.
Je poste la solution ici, au cas où :
[code:1][regex]::«»split($fic, '(.{X})') | ? {$_} #Avec X le nombre de caractères souhaités par ligne[/code:1]
Cordialement,
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.070 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- [Résolu] Découpage ligne d'un fichier