Je travaille sur un fichier batch et je dois imprimer des traits d'union (-) sur l'écran comme séparateur. Existe-t-il une commande rapide (moins de deux secondes) qui peut faire cela?
J'ai effectué plusieurs requêtes de recherche et je n'ai pas trouvé de réponse sur divers sites Web.
(code to find screen size) for /l %%a in (1,1,%screen size var%) do (set "line=%line%-") echo %line%
Le résultat doit afficher une ligne de tirets sur la console.
3 Réponses :
Si vous pouvez travailler sur les commandes par lots pour récupérer la valeur des colonnes
, vous pouvez utiliser la sortie de la commande MODE;
C:\Users\gjp>mode con Status for device CON: ---------------------- Lines: 9001 Columns: 120 Keyboard rate: 31 Keyboard delay: 1 Code page: 850
MODE CON
Merci, mais je cherchais à pouvoir enregistrer la sortie dans une variable et créer une ligne à l'écran
@FrederickReynolds, jetez un œil à ce fil ...
Ceci n'a pas été testé, mais basé sur la sortie du Mode CON
tel qu'utilisé dans gjpio Réponse de:
@Echo Off For /F %%A In ('Powershell -NoP "Write-Host('-' * $(Get-Host).UI.RawUI.WindowSize.Width)"')Do Set "separator=%%A" Echo Welcome to %~nx0 Echo %separator% Pause
Si vous avez l'intention d'utiliser le séparateur plusieurs fois dans votre script, vous pouvez l'enregistrer dans une variable:
@Echo Off&SetLocal EnableDelayedExpansion&Set "separator=" For /F "Skip=4Tokens=1*Delims=:" %%A In ('Mode CON')Do (For /L %%C In (1,1,%%B)Do Set "separator=!separator!-")&GoTo :Next :Next Rem Uncomment the next line if you don't want to use delayed expansion in the rest of the script ::EndLocal&Set "separator=%separator%" Rem Your code goes here Echo Welcome to %~nx0 Echo %separator% Pause
En guise de dernière réflexion après coup, et juste au cas où vous estimeriez que cela fonctionnerait plus rapidement, j'ai pensé que je ferais mieux de fournir une version utilisant l'expansion retardée également:
@Echo Off For /F "Skip=4Tokens=1*Delims=:" %%A In ('Mode CON')Do (For /L %%C In (1,1,%%B)Do (Call Set "separator=%%separator%%-"))&GoTo :Next :Next Echo Welcome to %~nx0 Echo %separator% Pause
En complément de tout ce qui précède, vous pouvez également utiliser powershell pour faites ceci aussi:
@Echo Off For /F "Skip=4Tokens=1*Delims=:" %%A In ('Mode CON')Do (For /L %%C In (1,1,%%B)Do @Set/P "=-"<Nul)&Echo( &GoTo :Draw :Draw Pause
Je vous suggère d'utiliser le code suivant:
@echo off setlocal EnableDelayedExpansion for /F "skip=4 tokens=2" %%A IN ('mode CON') do ( for /L %%B IN (1 1 %%A) do set "hyphen=!hyphen!-" echo !hyphen! goto :subroutine ) :subroutine echo You may continue here pause
ce qui est un peu compliqué, mais devrait faire ce que vous voulez.
Le code recherche les colonnes dans la sortie de commande de mode CON
et les ajoute à la variable tiret
en conséquence.
En quoi votre réponse est-elle «vraiment» différente de ma version d'extension retardée?
@Compo sauf qu'il est développé, avez-vous vu les conditions for / F
? Ils diffèrent, je pense, de votre réponse, n'est-ce pas?
Le mien a été écrit et accepté avant même que le vôtre ne soit publié. Dans des cas comme celui-ci, un membre responsable aurait suggéré d'apporter des améliorations mineures à la réponse existante, s'il avait été convenu qu'il s'agissait d'une amélioration. Je pourrais affirmer que le mien est meilleur et vous pouvez soutenir que le vôtre est plus facile à regarder, mais, à part que vous avez utilisé un délimiteur différent, ils sont essentiellement la même réponse, et il était inutile que vous l'affichais.
@Compo ce n'est pas une amélioration mineure, vous savez que dans une conversation dans le passé, vous avez continuellement soutenu pour une raison étrange, je ne pouvais même pas comprendre que les espaces ne devraient pas être utilisés car ils ne sont pas nécessaires. Imaginez-vous comme une personne qui vient de commencer à coder. Vous trouverez la mienne utile et organisée ou la vôtre réponse? En outre, quelle réponse est préférable de déboguer? Et finalement, vous n'avez probablement pas écrit le one-liner immédiatement, vous l'avez juste écrit ligne par ligne et vous l'avez converti, ensuite. C'est pourquoi je pense que nos réponses diffèrent.
De plus, j'aimerais rester dans cette excellente réponse d'Aacini: À mon avis, dans les réponses aux sujets Batch, nous devons soyez très concis et clair, en particulier avec les débutants, et fournissez les informations minimales qui aident à résoudre le problème, mais ne pas submerger et rendre les réponses confuses. À la fin, si vous pensez nos réponses sont les mêmes, lève un mod-flag plutôt que de créer une conversation entière avec moi. Notez cependant que je refuserais personnellement le drapeau.
Juste pour continuer votre argument inutile, j'ai utilisé le délimiteur :
car, quelle que soit la ligne de la sortie Mode CON
, seul le Skip < / code> aurait dû être ajusté, dans le vôtre, un modificateur aurait besoin d'ajuster à la fois le
Skip
et le nombre de Tokens
. Mon exemple montre comment ajuster le code, afin de désactiver à nouveau l'expansion retardée, sans affecter le code des utilisateurs en dessous, le vôtre ne le fait pas. La mienne garantit qu'aucune variable prédéfinie n'affecte la ligne de tirets, la vôtre ne le fait pas, et par souci d'exhaustivité, j'ai inclus 2 autres exemples!
@Compo donc ... après tout, votre premier commentaire n'a plus de sens puisque vous avez ajouté un commentaire complet pour expliquer en quoi nos réponses diffèrent ! Je trouve cela inutile et je ne comprends vraiment pas pourquoi vous l'avez ajouté. Deuxièmement, vous n'avez pas répondu à mes questions: si vous veniez de commencer à coder, quelle réponse préféreriez-vous? Cela dit, je n'aime pas rendre la vie des autres difficile et j'essaie de leur expliquer le code, afin qu'ils puissent le comprendre et le modifier à leur guise et j'espère qu'ils ne reviendront pas avec une mauvaise conduite, vous ne le faites pas. Vous compliquez les choses et je ne sais pas le pourquoi .
Enfin, comme vous pensez que mon argument est inutile, donc nos réponses ne diffèrent pas => la mienne est le plagiat, alors veuillez lever un mod-flag personnalisé, afin que les modérateurs puissent l'examiner et dire si c'est ou non comme je l'ai mentionné ci-dessus.
Voir stackoverflow.com/a/25595256