Question
Problème d'affiche persistant
- Yoann
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 4
- Remerciements reçus 0
il y a 1 an 5 mois #32677
par Yoann
Problème d'affiche persistant a été créé par Yoann
Bonjour à tous, je suis en train de réaliser un script qui en appelle d'autres et je rencontre des problème d'affichage sur les menus de choix avec des souci d'affichage fantômes.
Le premier menu qui va s'afficher:
Lorsque je vais afficher le menu suivant les textes du premier menu ne vont pas être effacés entièrement mais le menu 2 va remplacer le menu 1. Cela crée des problème d'affichage notamment si les textes sont plus court dans le menu 2.
Pas sûr que mon explication soit très clair mais j'essaie au mieux
Merci.
Le premier menu qui va s'afficher:
$continueNav = $true
while ($continueNav)
{
Clear
Write-Host "----- Choix ------"
Write-Host ""
Write-Host "1. Choix 1"
Write-Host "2. Choix 2"
Write-Host "0. Choix 3"
Write-Host "--------------------------------"
$choixNav = read-host "Faire un choix puis valider"
switch ($choixNav)
{
1
{
#action 1
}
2
{
#action 2
}
0
{
return
}
default {Write-Host "Choix invalide"-ForegroundColor Red}
}
}
Lorsque je vais afficher le menu suivant les textes du premier menu ne vont pas être effacés entièrement mais le menu 2 va remplacer le menu 1. Cela crée des problème d'affichage notamment si les textes sont plus court dans le menu 2.
Pas sûr que mon explication soit très clair mais j'essaie au mieux
Merci.
Connexion ou Créer un compte pour participer à la conversation.
- Julien Groizard
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 11
- Remerciements reçus 1
il y a 1 an 5 mois - il y a 1 an 5 mois #32679
par Julien Groizard
Réponse de Julien Groizard sur le sujet Problème d'affiche persistant
Hello,
De ce que j'ai compris, tu souhaites afficher le menu suivant "par dessus" l'ancien.
En d'autres termes, effacer l'ancien et poursuivre avec le suivant.
Powershell pourrait faire ça en commençant tous tes menus par des Clear-Host (Clear).
Comme ça, tous tes affichages repartiront du début de la console.
Je me permettrais également de te conseiller de faire une fonction au moins pour l'affichage des menus.
Exemple :
function Show-Menu {
param (
$select
)
switch ($select) {
"Main" {
Write-Host "
Menu Principal
"
Write-Host ""
Write-Host "
Choix
"
Write-Host ""
Write-Host "1. Choix 1"
Write-Host "2. Choix 2"
Write-Host "0. Exit..."
Write-Host "
"
}
"2" {
Write-Host "
Menu 2
"
Write-Host ""
Write-Host "
Choix
"
Write-Host ""
Write-Host "1. Choix 1"
Write-Host "2. Choix 2"
Write-Host "0. Menu Principal"
Write-Host "
"
}
Default {}
}
}
$continueNav = $true
while ($continueNav)
{
Clear
Show-Menu -select "Main"
$choixNav = read-host "Faire un choix puis valider"
switch ($choixNav)
{
1
{
Clear-Host
do {
Show-Menu -select "2"
} while (
($choixNav = read-host "Faire un choix puis valider") -ne 0
)
}
2
{
#action 2
}
0
{
return
}
default {Write-Host "Choix invalide"-ForegroundColor Red}
}
}
Le Do-While est une variante pour afficher en permanence tant que tu n'as pas entrée 0 (les doubles parenthèses sont importantes pour récupérer $choixNav).
Si tu es perdu, reprend simplement l'idée de base qui est de vider la console pour la réafficher
En espérant aider
Bonne journée à toi
De ce que j'ai compris, tu souhaites afficher le menu suivant "par dessus" l'ancien.
En d'autres termes, effacer l'ancien et poursuivre avec le suivant.
Powershell pourrait faire ça en commençant tous tes menus par des Clear-Host (Clear).
Comme ça, tous tes affichages repartiront du début de la console.
Je me permettrais également de te conseiller de faire une fonction au moins pour l'affichage des menus.
Exemple :
function Show-Menu {
param (
$select
)
switch ($select) {
"Main" {
Write-Host "
Menu Principal
"
Write-Host ""
Write-Host "
Choix
"
Write-Host ""
Write-Host "1. Choix 1"
Write-Host "2. Choix 2"
Write-Host "0. Exit..."
Write-Host "
"
}
"2" {
Write-Host "
Menu 2
"
Write-Host ""
Write-Host "
Choix
"
Write-Host ""
Write-Host "1. Choix 1"
Write-Host "2. Choix 2"
Write-Host "0. Menu Principal"
Write-Host "
"
}
Default {}
}
}
$continueNav = $true
while ($continueNav)
{
Clear
Show-Menu -select "Main"
$choixNav = read-host "Faire un choix puis valider"
switch ($choixNav)
{
1
{
Clear-Host
do {
Show-Menu -select "2"
} while (
($choixNav = read-host "Faire un choix puis valider") -ne 0
)
}
2
{
#action 2
}
0
{
return
}
default {Write-Host "Choix invalide"-ForegroundColor Red}
}
}
Le Do-While est une variante pour afficher en permanence tant que tu n'as pas entrée 0 (les doubles parenthèses sont importantes pour récupérer $choixNav).
Si tu es perdu, reprend simplement l'idée de base qui est de vider la console pour la réafficher
En espérant aider
Bonne journée à toi
Dernière édition: il y a 1 an 5 mois par Julien Groizard.
Connexion ou Créer un compte pour participer à la conversation.
- Yoann
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 4
- Remerciements reçus 0
il y a 1 an 5 mois #32681
par Yoann
Réponse de Yoann sur le sujet Problème d'affiche persistant
Salut Julien,
merci de ta réponse. J'ai oublié d'ajouter que j'ai déjà testé avec des CLS dans le While et dans "l'action" du choix mais sans succès, je vais tester en modifiant mon code avec ta solution de fonction.
Merci.
merci de ta réponse. J'ai oublié d'ajouter que j'ai déjà testé avec des CLS dans le While et dans "l'action" du choix mais sans succès, je vais tester en modifiant mon code avec ta solution de fonction.
Merci.
Connexion ou Créer un compte pour participer à la conversation.
- Yoann
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 4
- Remerciements reçus 0
il y a 1 an 5 mois #32682
par Yoann
Réponse de Yoann sur le sujet Problème d'affiche persistant
J'ai essayé de modifier mon code mais en fait je pense que la fonction d'appel de menu ne s'adapte pas très bien à l'architecture de mon script, je m'explique:
Mon menu principal propose 5 choix. Les choix 2-3-4-5 font appels à des scripts indépendant en .psm1 indépendants qui se lance et ensuite retour au menu principal, tout est nickel.
Le choix 1 de mon menu principal va d'abord lancer une commande dans mon *ps1 principal, ensuite lancement d'un premier *psm1 (qui lui contient un menu de choix), reviens dans mon principal, lance mon deuxième *psm1, etc.
Est-ce que tu penses que cette persistance puisse venir de ce fonctionnement?
Mon menu principal propose 5 choix. Les choix 2-3-4-5 font appels à des scripts indépendant en .psm1 indépendants qui se lance et ensuite retour au menu principal, tout est nickel.
Le choix 1 de mon menu principal va d'abord lancer une commande dans mon *ps1 principal, ensuite lancement d'un premier *psm1 (qui lui contient un menu de choix), reviens dans mon principal, lance mon deuxième *psm1, etc.
Est-ce que tu penses que cette persistance puisse venir de ce fonctionnement?
Connexion ou Créer un compte pour participer à la conversation.
- Julien Groizard
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 11
- Remerciements reçus 1
il y a 1 an 5 mois #32683
par Julien Groizard
Réponse de Julien Groizard sur le sujet Problème d'affiche persistant
Je pense que l'erreur vient d'une confusion avec l'extension "psm1".
En effet, il s'agit d'un module de powershell (d'où le "m").
Dans ces fichiers, on ne peut mettre que des fonctions qu'on appellera et utilisera uniquement dans un script père.
Si tu veux exécuter un script indépendamment du principal, je t'inviterais à garder l'extension ".ps1" et appeler ce script via la commande : "Start-Process Powershell '*.ps1' "
En effet, il s'agit d'un module de powershell (d'où le "m").
Dans ces fichiers, on ne peut mettre que des fonctions qu'on appellera et utilisera uniquement dans un script père.
Si tu veux exécuter un script indépendamment du principal, je t'inviterais à garder l'extension ".ps1" et appeler ce script via la commande : "Start-Process Powershell '*.ps1' "
Connexion ou Créer un compte pour participer à la conversation.
- Yoann
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 4
- Remerciements reçus 0
il y a 1 an 5 mois #32686
par Yoann
Réponse de Yoann sur le sujet Problème d'affiche persistant
Je viens de tout réécrire avec des scripts au lieu des modules, du coup plus de soucis.
J'étais tombé sur une info d'un tuto qu'il valait mieux des modules, ben du coup pas dans mon cas
Merci pour ton aide
J'étais tombé sur une info d'un tuto qu'il valait mieux des modules, ben du coup pas dans mon cas
Merci pour ton aide
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.071 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Problème d'affiche persistant