如果您希望直接从命令提示符快速高亮显示和复制文本,而不是将输出redirect到文件,QuickEdit模式可能很有用。 但是,它有它的缺点。 如果您正在运行批处理脚本,则在控制台中select文本将暂停脚本执行,直到文本被取消选中。 这可能是一个问题,如果脚本预计将继续没有停顿。
如何禁用某些BATCH脚本的QuickEdit模式?
不幸的是,没有办法从命令行编辑当前CMD Console实例的QuickEdit设置。 但是,我们可以暂时禁用全局QuickEdit设置并启动一个新的控制台实例。 有一些方法可以做到这一点,每个方法都有自己的优点(缺点)和缺点(缺点)。 以下两种解决方案都需要修改注册表的能力。
REGEDIT
CON:需要创建临时REG文件
代码(在你的脚本开始处):
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
CON:不同的版本有不同的语法(在下面的代码中说明)
代码(在你的脚本开始处):
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
如果您有其他解决方案,请随时发布。
一种会影响当前命令提示符会话的方式。
这里是quickEdit.bat
。 这是一个自编译的.net脚本,因此它需要安装.net(在Winsows XP / 2003上默认不安装)。
用法:
启用:
quickEdit 1
禁用:
quickEdit 2
获取状态:
quickEdit 3