Windows BATCH:如何为单个脚本禁用QuickEdit模式?

时间:2014-02-16 00:35:03

标签: windows batch-file console registry settings

如果您希望直接从命令提示符快速突出显示和复制文本而不是将输出重定向到文件,则QuickEdit模式非常有用。但是,它有它的缺点。如果您正在运行批处理脚本,则在控制台中选择文本将暂停脚本执行,直到取消选择该文本。如果预期脚本会在没有暂停的情况下继续运行,则可能会出现问题。

如何为某些BATCH脚本禁用QuickEdit模式?

3 个答案:

答案 0 :(得分:3)

一种会影响当前命令提示会话的方法。

这是quickEdit.bat。它是一个自编译的.net脚本,因此需要安装.net(默认情况下不安装在Winsows XP / 2003上)。

用法:

启用:

 quickEdit  1

禁用:

 quickEdit  2

获取状态:

 quickEdit  3

答案 1 :(得分:1)

不幸的是,无法从命令行编辑当前CMD控制台实例的QuickEdit设置。但是,我们可以暂时禁用全局QuickEdit设置并启动新的控制台实例。有几种方法可以做到这一点,每种方式都有自己的特权(优点)和缺点(缺点)。以下两种解决方案都需要能够修改注册表。

  1. REGEDIT

    • PRO:与任何常见的Windows系统兼容
    • 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
      
  2. REG

    • PRO:不需要创建临时文件
    • CON:在没有Resource Kit
    • 的Windows 2000及更早版本中不可用
    • 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
      
  3. 如果您有其他解决方案,请随时发布。

答案 2 :(得分:0)

对选项1的轻微更新对我有用,在Win10上没有运行两次,谢谢。

if exist "c:\temp\consoleSettingsBackup.reg" regedit /S "c:\temp\consoleSettingsBackup.reg" & DEL /F /Q "c:\temp\consoleSettingsBackup.reg" & goto START
regedit /S /e "c:\temp\consoleSettingsBackup.reg" "HKEY_CURRENT_USER\Console"
reg add "HKCU\Console" /v QuickEdit /t REG_DWORD /d 0 /f
start "" "cmd" /c ""%~dpnx0" & exit"
exit

: START
rem your commands\scripts here

exit