Windows BATCH: comment désactiver le Mode QuickEdit pour les scripts individuels?
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?
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
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.
-
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
-
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.