Question [Résolu] Découpage ligne d'un fichier

Plus d'informations
il y a 4 ans 10 mois #22573 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:

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.

Plus d'informations
il y a 4 ans 10 mois #22575 par Laurent Dardenne
Salut,
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.

Plus d'informations
il y a 4 ans 10 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 = \&quot;\&quot;
for ($i=1; $i -le 150; $i++) {
$StringFile += (65..90) + (97..122) | Get-Random -Count 1 | % {[char]$_}
}
Write-Host $StringFile
Write-Host \&quot;
\&quot;


# 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.

Plus d'informations
il y a 4 ans 10 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,

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

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