Question Aide pour projet/ Remplacer caractères nomFichier

Plus d'informations
il y a 14 ans 11 mois #9401 par mens
Bonjour tout le monde,

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.

Plus d'informations
il y a 14 ans 11 mois #9402 par Richard Lazaro
Bonjour,

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 }

\\&quot;Problems cannot be solved by the same level of thinking that created them.\\&quot; - Albert Einstein

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

Plus d'informations
il y a 14 ans 11 mois #9403 par Richard Lazaro
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.

Think-MS : (Get-Life).Days | %{ Learn-More }

\\&quot;Problems cannot be solved by the same level of thinking that created them.\\&quot; - Albert Einstein

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

Plus d'informations
il y a 14 ans 11 mois #9405 par mens
Richard Lazaro écrit:

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. :S
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 \&quot;contrôle\&quot; 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: \&quot;é\&quot; -&gt; \&quot;e\&quot;

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.

Plus d'informations
il y a 14 ans 11 mois #9406 par mens
J'ai essayé une autre fonction pour afficher d'abord tous les fichiers qui sont dans le répertoire, et ceci j'aimerais faire afficher dans la première listbox.

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.

Plus d'informations
il y a 14 ans 11 mois #9407 par mens
J'ai trouvé comment faire pour afficher les fichiers qu'il y a dans le répertoire, mais j'ai un autre petit soucis, c'est qu'il y a aussi les répertoires qui sont affichés.

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.

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