Windows BATCH: comment désactiver le Mode QuickEdit pour les scripts individuels?

Le mode QuickEdit

peut être utile si vous souhaitez rapidement mettre en surbrillance et copier du texte directement depuis l'invite de commande au lieu de rediriger la sortie vers un fichier. Toutefois, il a ses inconvénients. Si vous avez un script batch en cours d'exécution, sélectionner du texte dans la console mettra en pause l'exécution du script jusqu'à ce que le texte soit désélectionné. Cela peut être un problème si le script doit continuer sans pause.

comment désactiver le mode QuickEdit pour certains scripts par lots?

5
demandé sur Lectrode 2014-02-16 04:35:02

2 réponses

une manière qui affectera la session d'invite de commande actuelle.

quickEdit.bat . Il s'agit d'un script .net auto-compilé qui nécessite donc l'installation de .net (non installé par défaut sur Winsows XP/2003).

Utilisation:

Activer:

 quickEdit  1

Désactiver:

 quickEdit  2

Obtenir De L'État:

 quickEdit  3
3
répondu npocmaka 2017-03-24 11:18:04

malheureusement, il n'y a aucun moyen d'éditer le paramètre QuickEdit de L'instance actuelle de la Console CMD à partir de la ligne de commande. Nous pouvons cependant désactiver temporairement le réglage global de QuickEdit et démarrer une nouvelle instance de la console. Il y a deux façons de le faire, chacune avec ses avantages (avantages) et ses inconvénients (inconvénients). Les deux solutions suivantes nécessitent la capacité de modifier le registre.

  1. REGEDIT

    • PRO: Compatible avec tout système de Windows commun
    • CON: nécessite la création de fichiers REG temporaires

    • Code (au début de votre script):

      if exist "%TEMP%\consoleSettingsBackup.reg" regedit /S "%TEMP%\consoleSettingsBackup.reg"&DEL /F /Q "%TEMP%\consoleSettingsBackup.reg"&goto :mainstart
      regedit /S /e "%TEMP%\consoleSettingsBackup.reg" "HKEY_CURRENT_USER\Console"
      echo REGEDIT4>"%TEMP%\disablequickedit.reg"
      echo [HKEY_CURRENT_USER\Console]>>"%TEMP%\disablequickedit.reg"
      (echo "QuickEdit"=dword:00000000)>>"%TEMP%\disablequickedit.reg"
      regedit /S "%TEMP%\disablequickedit.reg"
      DEL /F /Q "%TEMP%\disablequickedit.reg"
      start "" "cmd" /c "%~dpnx0"&exit
      
      :mainstart
      
  2. REG

    • PRO: ne nécessite pas la création de fichiers temp
    • CON: Non disponible Windows 2000 et les versions antérieures sans Kit de Ressources
    • CON: différentes versions ont une syntaxe différente (comptabilisée dans le code ci-dessous)

    • Code (au début de votre script):

      set reg50=::&set reg51=::&(reg /?>nul 2>&1 && set reg51=)
      if %errorlevel%==5005 set reg50=
      set qkey=HKEY_CURRENT_USER\Console&set qprop=QuickEdit
      %reg51%if defined qedit_val (echo y|reg add "%qkey%" /v "%qprop%" /t REG_DWORD /d %qedit_val%&goto :mainstart)
      %reg50%if defined qedit_val (reg update "%qkey%\%qprop%"=%qedit_val%&goto :mainstart)
      %reg51%for /f "tokens=3*" %%i in ('reg query "%qkey%" /v "%qprop%" ^| FINDSTR /I "%qprop%"') DO set qedit_val=%%i
      %reg50%for /f "tokens=3*" %%i in ('reg query "%qkey%\%qprop%"') DO set qedit_val=%%i
      if "%qedit_val%"=="0" goto :mainstart
      if "%qedit_val%"=="0x0" goto :mainstart
      %reg51%echo y|reg add "%qkey%" /v "%qprop%" /t REG_DWORD /d 0
      %reg50%if "%qedit_val%"=="" reg add "%qkey%\%qprop%"=0 REG_DWORD
      %reg50%if "%qedit_val%"=="1" reg update "%qkey%\%qprop%"=0
      start "" "cmd" /c set qedit_val=%qedit_val% ^& call "%~dpnx0"&exit
      
      :mainstart
      

Si vous avez une autre solution, n'hésitez pas à poster.

1
répondu Lectrode 2014-02-16 00:35:02