Comment code un spinner pour les processus en attente dans un fichier Batch?
Je voudrais montrer à l'utilisateur avec un spinner, que quelque chose est fait en arrière-plan mais ne savez pas comment cela fonctionne dans un fichier batch.
Quelqu'un a une idée?
Qu'entendez-vous par "Lot"? Entendez-vous un .bat ou .fichier cmd?
Depuis le poster d'autres questions, il semble qu'il signifie d'une .le fichier bat.
Correcte, doit être dans un fichier de commande.
Depuis le poster d'autres questions, il semble qu'il signifie d'une .le fichier bat.
Correcte, doit être dans un fichier de commande.
OriginalL'auteur Oliver Friedrich | 2008-12-15
Vous devez vous connecter pour publier un commentaire.
Cela peut être fait assez facilement avec de la pure native des commandes, vous avez juste à savoir comment utiliser le plus délicat d'entre eux. Pas d'utilisation d'outils externes tels que VBScript ou des effets secondaires désagréables comme l'effacement de l'écran sont nécessaires.
Ce que vous cherchez est l'équivalent de la fête "
echo -n
" de commande qui génère une ligne, sans saut de ligne. Dans XP lot, ceci est réalisé en utilisant "set /p
" (demander à l'utilisateur pour la réponse à une invite de commandes) avec vide d'entrée comme suit:sera la sortie de la chaîne de caractères "Bonjour." sans le moindre saut de ligne.
Ce truc (et l'utilisation de CTRL-H, le caractère de retour arrière peut être vu dans le script de test suivant qui commence (l'un après l'autre) 10-deuxième sous-tâche avec 20 secondes de délai d'attente et 15 de la deuxième sous-tâche avec un 10 secondes de délai d'attente.
La charge utile script est créé par le script et sa seule exigence est qu'il ne le travail qu'il a à faire, puis supprimez un fichier flag lorsque vous avez terminé, de sorte que la fonction de moniteur sera en mesure de le détecter.
Garder à l'esprit que le ^H des chaînes dans ce script sont en fait CTRL-H caractères, le ^| est deux caractères distincts utilisés pour échapper à la pipe symbole.
Wow. J'ai appris quelque chose de nouveau aujourd'hui. +1
hey, c'est de la vieille école, exactement ce que j'espérais lire. Pour le moment, le script n'est vraiment rien, mais je pense que je vais obtenir ce travail à plus tard...
J'utilise gVim pour mon montage donc CTRL-V CTRL-H est la clé de la séquence.
Pour les gens à l'aide de Notepad++, vous pouvez insérer le caractère de retour arrière en allant Edit -> Panneau de Personnage, puis double-cliquez sur la Valeur 8 "BS". Cela insère le retour arrière de caractère spécial.
OriginalL'auteur
Essayez ceci:
OriginalL'auteur
Si vous n'avez pas l'esprit de l'écran de compensation...essayez ceci:
EDIT: dans Cet exemple, vous démarrer la Calculatrice, puis d'afficher un "spinner" jusqu'à la fermeture de la Calculatrice. J'utilise pslist pour vérifier l'existence d'CALC.EXE. Le >nul 2>,&1 redirige la sortie standard STDOUT et STDERR à nul, donc rien de PSLIST sera affiché.
Vous pourriez tout aussi bien utiliser tasklist au lieu de pslist qui utilise un facilement disponibles programme.
OriginalL'auteur
Si je comprends bien votre question, vous souhaitez un spinner parce que certaines opérations que vous effectuez est en prenant le temps et que vous voulez montrer à l'utilisateur que quelque chose se passe, non?
Dans ce cas, autant que je sache, il n'est pas possible avec le natif de commandes. (il pourrait être possible si vous aviez un programme qui a montré un spinner pendant l'exécution de l'opération qui prend du temps)
Et il semble que l'écho ne supportent pas les séquences d'échappement ansi (à l'époque, il devait avoir ansi.sys chargé, ne sais pas si ça existe toujours) si vous ne pouvez pas utiliser la norme ansi pour contrôler le curseur.
vous\e[0m 🙂
Pour les séquences d'échappement ANSI, vous devez ajouter "DEVICE=%systemroot%\system32\ANSI.SYS" à votre system32\config.nt de fichier et redémarrez l'ordinateur. Mais il n'est pas nécessaire, vous pouvez atteindre plus facilement que par l'inclusion d'un nouveau pilote de périphérique. Voir ma réponse ailleurs dans la présente question.
OriginalL'auteur
Le spinner PEUT être fait dans le script de traitement par lot, vous avez juste besoin de quelques variables:
Pour la chauve-souris elle-même pour détecter un processus en cours d'exécution/sorties. Vous pouvez le faire via le WMI interface de ligne de commande ou la commande tasklist dont j'ai une connaissance limitée.
Si elle était de retour dans le DOS jours, vous pourriez même ne fait que sans effacer l'écran... bref de l'aide d'une combinaison de caractères d'échappement. Je ne sais pas si c'est encore possible sur Vista/XP.
euh... je vais essayer ce soir.
Les séquences d'échappement ne fonctionnent plus dans la norme cmd.exe windows, j'ai essayé ESC[2A avant de monter deux lignes exactement pour ce type de barre de progression du projet, en vain.
Vous devez ajouter "DEVICE=%systemroot%\system32\ANSI.SYS" à votre system32\config.nt de fichier et redémarrez l'ordinateur. Mais il n'est pas nécessaire, vous pouvez atteindre plus facilement que par l'inclusion d'un nouveau pilote de périphérique. Voir ma réponse ailleurs dans la présente question.
c'est si ancienne! havn pas touché à la config.nt dans les âges!
OriginalL'auteur
Si vous voulez dire à l'intérieur d'un Windows script de commandes, vous ne pouvez pas le faire nativement. L'écho instruction utilisée pour imprimer à la console sera toujours l'impression d'un retour à la ligne, et vous ne pouvez pas déplacer le curseur.
C'est un peu un hack, mais vous pouvez le faire avec une combinaison de VBScript et le script de commandes.
Ce VBScript aura l'impression d'un retour arrière, puis c'est l'argument:
Mettre ça dans un fichier,
vbsEcho.vbs
, puis d'appeler ce script à partir de votre script de commandes. Le lot suivant script permet de garder l'affichage de la touche de navigation jusqu'à ce que vous appuyez sur CTRL-C:EDIT: à l'Aide de certaines des idées de aphoria réponse, ce script va lancer la calculatrice de Windows, et d'afficher un compteur jusqu'à ce que le calculateur de ferme:
OriginalL'auteur
Vous pouvez utiliser un compteur qui imprime un caractère différent à partir d'un ensemble donné (comme "\|/-") et que vous changez le caractère selon comme "compteur modulo 4". De toute façon, vous ne dites pas la langue dans laquelle vous travaillez en tant qu'il est un peu difficile d'être plus précis.
EDIT: maintenant que nous savons de l'environnement dans lequel vous jouez, je dirais que la chauve-souris/CMD langue n'est pas vraiment à la hauteur... je le recommande importe quel langage de script Ruby être mon préféré.
lot est plutôt un environnement de plus d'une langue 😉
Demandez-moi, le Lot n'est ni une langue, que dans un environnement. Sa maladie, au mieux 😉
Non, "lot" est l'utilisation de la cmd.exe de langue. Et il est venu un long chemin depuis le bon vieux MS-dos jours, c'est vraiment très puissant aujourd'hui, @BeowulfOF.
OriginalL'auteur
Je trouve le plus simple est de mettre à jour le titre de cette façon, vous n'avez pas à faire un CLS tout le temps.
La raison pour les deux lignes de ping -n, c'est que c'est plus rapide pour les de ping à faire un double de ping de seconde, par rapport à un seul ping de deux secondes.
Aussi, pour ceux qui ne connaissent pas, un :: est le même que pour un REM, sauf que les commentaires sont ignorés au début de l'analyseur (je pense que c'est le bon mot) plutôt qu'à la fin. Tout simplement, la ligne est ignoré.
OriginalL'auteur
paxdiablos a une étonnante réponse, mais d'avoir à l'écho de vos commandes dans un payload fichier est ennuyeux. C'est dur à lire et difficile à déboguer. J'ai pris son code et l'a modifié un peu pour mon propre usage:
OriginalL'auteur
Cette routine examine la sortie de la liste des tâches d'un processus de COMMENCER à partir de cmd.
Passer le nom de l'exe en tant que paramètre par ex.
appelez le :spinner calc.exe
C'rapports
Écoulé: 001 secondes
et incrémente secondes jusqu'à ce que le fichier exe processus se termine.
Le temps Écoulé 001 secondes message est écrasé à chaque seconde par ECHO.exe -n \r
qui echos une cr sans un saut de ligne.
Echo.exe est disponible à
http://www.paulsadowski.com/wsh/cmdprogs.htm
OriginalL'auteur
démarrage de l'application, attendez le chargement
OriginalL'auteur
:BOUCLE
ECHOX -n "~r%pour le Traitement..."
SI %DE TAUX DE CLICS% EQU 4 SET /UN CTR=0
SI %de taux de clics%==0 (set /p DOT=3)
OriginalL'auteur