3 votes

Le CLI graphique a changé après l'exécution de la commande powershell dans le fichier batch.

Après le code PowerShell, le CLI du fichier batch est un peu différent, je veux le changer à nouveau

Vous pouvez voir que la police a changé et que la couleur a un peu changé.

Avant la commande PowerShell

enter image description here

Après la commande PowerShell

enter image description here

@echo off
echo +==================================================+
echo ^|**********************Login***********************^|
echo +==================================================+
echo.
echo Login
setlocal DisableDelayedExpansion
set /p input=Username:
::powershell command
set "psCommand=powershell -Command "$pword = read-host 'Enter password' -AsSecureString ; ^
    $BSTR=[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pword); ^
      [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)""
        for /f "usebackq delims=" %%p in (`%psCommand%`) do set passwords=%%p
)
if %passwords% == 123 goto sucess
exit
END LOCAL
:sucess
cls
echo welcom back %Username%!
echo :)
pause
exit

Je vois les différentes

avant la commande Powershell

enter image description here

après la commande Powershell

enter image description here

4voto

mklement0 Points 12597

Je présume que le problème vient de chcp 65001 étant en vigueur, c'est-à-dire la page de code UTF-8.

Avec page de code 65001 en vigueur, powershell.exe - le CLI de Windows PowerShell - présente malheureusement le symptôme que vous décrivez : la police actuellement sélectionnée est remplacée par une police ancienne. police matricielle avec un support limité des glyphes (caractères).

La commande suivante illustre le problème (exécutée à partir de cmd.exe ):

:: Unexpectedly switches to a raster font.
:: Note: No longer occurs in PowerShell (Core) 7+, with pwsh.exe
chcp 65001 & powershell -noprofile -c "'hi'"

Vous disposez des éléments suivants options :

  • Exécutez votre fichier batch dans Terminal Windows disponible dans le Microsoft Store plutôt que dans une fenêtre de console traditionnelle.

  • Vous pouvez temporairement passer à une page de code autre que 65001 , en supposant qu'il supporte toujours tous les caractères dont vous avez besoin. ; appliqué à l'exemple ci-dessus :

    chcp 437 & powershell -noprofile -c "'hi'" & chcp 65001
  • Vous pouvez passer de Windows PowerShell à PowerShell (Core) 7+ l'édition succédant à l'installation à la demande et multiplateforme. Son site CLI , pwsh.exe ne présente plus le problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X