Question
Aide pour projet/ Remplacer caractères nomFichier
- mens
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 8
- Remerciements reçus 0
j'ai un problème pour un projet que je dois faire pour l'école.
Le problème est le suivant, je n'arrive pas à faire des méthodes spécifiques à mon script.
J'ai déja fait une interface homme machine, et il y a une seul fonctionnalité qui marche pour l'instant.
Voici l'ihm:
Ce que j'aimerais faire c'est que je voudrais selectionner un répertoire, et ensuite dans ce répertoire tous les noms de fichiers doivent être contrôlés, et si un nom contient un caractère spécial mon script devrait le modifier. ex: \"é\" devient \"e\"
Le bouton \"parcourir...\" fonctionne.
Mais j'aimerais que le script prenne le chemin de la premiere textBox et qu'il controle ce répertoire.
voici un bout de code:
[code:1]
#
#
# Ajout evenements Boutons
#
#
$button3.Add_Click({Explore})
$button2.Add_Click({AnnuleControle})
$button1.Add_Click({SupprimeListes})
$button.Add_Click({Control})
#
#
# Fonctions
#
#
function Explore {
$app = new-object -com Shell.Application
$ssfWINDOWS = 12
$folder = $app.BrowseForFolder(0, \"Select Folder\", 0, $ssfWINDOWS)
if ($folder.Self.Path -ne \"\"«») {$textBox1.Text = $folder.Self.Path}
}
function Control{
$listBox.add({get-childitem -path $textbox1.text | get-childitem | format-table name})
}
function SupprimeListes {
}
function annuleControle{
}
[/code:1]
Message édité par: mens, à: 15/04/11 10:51<br><br>Message édité par: mens, à: 15/04/11 10:54
Pièces jointes :
Connexion ou Créer un compte pour participer à la conversation.
- Richard Lazaro
- Hors Ligne
- Membre platinium
-
- Messages : 530
- Remerciements reçus 0
Si j'ai bien compris ta demande, voici une fonction qui supprime les caractères spéciaux :
[code:1]
function Remove-Diacritic {
Param (
[string] $Text
)
$normalizedString = $Text.Normalize([System.Text.NormalizationForm]::FormD)
$stringBuilder = New-Object System.Text.StringBuilder
for($i=0;$i-lt$normalizedString.Length;$i++) {
[char]$char = $normalizedString[$i]
if([System.Globalization.CharUnicodeInfo]::GetUnicodeCategory($char) -ne [System.Globalization.UnicodeCategory]::NonSpacingMark) {
$stringBuilder.Append($char) | Out-Null
}
}
return $stringBuilder.ToString()
}
Remove-Diacritic -Text 'Ceci é un phàse dès Têstü'
[/code:1]
Bien Cordialement,
Richard Lazaro.<br><br>Message édité par: Richard Lazaro, à: 15/04/11 11:31
Think-MS : (Get-Life).Days | %{ Learn-More }
\\"Problems cannot be solved by the same level of thinking that created them.\\" - Albert Einstein
Connexion ou Créer un compte pour participer à la conversation.
- Richard Lazaro
- Hors Ligne
- Membre platinium
-
- Messages : 530
- Remerciements reçus 0
La méthode Add de ton objet $listBox attend un tableau de chaîne de caractère, alors que là tu lui donne un tableau d'objet qu'il ne va pas connaitre.
Essaye donc plutôt cela :
[code:1]
$listBox.add({(get-childitem -path $textbox1.text | Foreach-Object {Write-Output $_.Name})})
[/code:1]
Bien Cordialement,
Richard Lazaro.
Think-MS : (Get-Life).Days | %{ Learn-More }
\\"Problems cannot be solved by the same level of thinking that created them.\\" - Albert Einstein
Connexion ou Créer un compte pour participer à la conversation.
- mens
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 8
- Remerciements reçus 0
Je viens de remarquer un problème dasn ton script :
La méthode Add de ton objet $listBox attend un tableau de chaîne de caractère, alors que là tu lui donne un tableau d'objet qu'il ne va pas connaitre.
Essaye donc plutôt cela :
[code:1]
$listBox.add({(get-childitem -path $textbox1.text | Foreach-Object {Write-Output $_.Name})})
[/code:1]
Bien Cordialement,
Richard Lazaro.
J'ai essayé ceci, mais ca fonctionne pas.
pour l'instant il n'y a rien qui s'affiche dans les listbox.
J'aimerais bien que quand j'ai un répertoire qui est affiché dans la textbox, quand je clique sur le bouton \"contrôle\" que le script contrôle dans le répertoire spécifié tous les noms des fichiers et si les noms contiennent des caractères spéciaux qu'il les remplace. par ex: \"é\" -> \"e\"
et à la fin de ceci, il doit affiché dans la première listbox tous les fichiers qui ont été contrôlés et dans la deuxième seulement les fichiers dont le nom a été changé.
Connexion ou Créer un compte pour participer à la conversation.
- mens
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 8
- Remerciements reçus 0
j'ai fait cette fonction:
[code:1]
get-childitem -path $textbox1.text| foreach-object {$listbox.add($_.Name)}
[/code:1]
mais pour l'instant il y a des erreurs.
Connexion ou Créer un compte pour participer à la conversation.
- mens
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 8
- Remerciements reçus 0
voici le code que j'ai utilisé
[code:1]
$add = get-childitem -path $textbox1.text
$listbox.items.addrange(@($add))
foreach($it in $listbox.items){
}
[/code:1]<br><br>Message édité par: mens, à: 15/04/11 14:11
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Aide pour projet/ Remplacer caractères nomFichier