Modify cmd.exe properties using the command prompt

2019-01-10 06:31发布

Isn't that nicely recursive?

I've got a portable command prompt on my external drive, and it has a nice .bat file to configure some initial settings, but I'd like more!

Here's what I know how to set from .bat:

  • Colors = (color XY) where x and y are hex digits for the predefined colors
  • Prompt = (prompt $p$g) sets the prompt to "C:\etc\etc >" the default prompt
  • Title = (title "text") sets the window title to "text"
  • Screen Size = (mode con: cols=XX lines=YY) sets the columns and lines size of the window
  • Path = (SET PATH=%~d0\bin;%PATH%) sets up local path to my tools and appends the computer's path

So that's all great. But there are a few settings I can't seem to set from the bat. Like, how would I set these up wihtout using the Properties dialogue:

  • Buffer = not screen size, but the buffer
  • Options like quick edit mode and autocomplete
  • Popup colors
  • Font. And can you use a font on the portable drive, or must it be installed to work?
  • Command history options

4条回答
地球回转人心会变
2楼-- · 2019-01-10 06:39

For true Buffer Size adjustment use DOSKEY /LISTSIZE=size

You can't change colors within the shell anymore since Microsoft took ANSI ESC control out of the command/cmd prompts.

查看更多
贪生不怕死
3楼-- · 2019-01-10 06:41

Regarding auto-completion:

File and Directory name completion is NOT enabled by default. You can enable or disable file name completion for a particular invocation of CMD.EXE with the /F:ON or /F:OFF switch. You can enable or disable completion for all invocations of CMD.EXE on a machine and/or user logon session by setting either or both of the following REG_DWORD values in the registry using REGEDT32.EXE:

HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\CompletionChar
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\PathCompletionChar

    and/or

HKEY_CURRENT_USER\Software\Microsoft\Command Processor\CompletionChar
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\PathCompletionChar

with the hex value of a control character to use for a particular function (e.g. 0x4 is Ctrl-D and 0x6 is Ctrl-F). The user specific settings take precedence over the machine settings. The command line switches take precedence over the registry settings.

If completion is enabled with the /F:ON switch, the two control characters used are Ctrl-D for directory name completion and Ctrl-F for file name completion. To disable a particular completion character in the registry, use the value for space (0x20) as it is not a valid control character.

Couldn't find any command history options in there ( cmd /? ), and it looks like the other options you asked about are set exclusively through registry settings.

查看更多
乱世女痞
4楼-- · 2019-01-10 06:48

You can set these values through a shortcut (.LNK file).

I have a shortcut on my desktop with this as the "Target:"

%windir%\system32\cmd.exe /K C:\MIKE\STARTUP.CMD

The /K switch tell CMD to run the batch file (which sets some variables, the prompt, etc.) and then stay open.

If you right-click on the shortcut and view its properties, you can set the window and buffer size, popup colors, starting position (x,y axes) etc. The settings will be saved in the shortcut itself and will be applied every time you open CMD using that shortcut.

查看更多
Melony?
5楼-- · 2019-01-10 06:49

Regarding setting the buffer size:

Using mode con: cols=XX lines=YY sets not only the window (screen) size, but the buffer size too.

If you specify a size allowed by your system, based on available screen size, you'll see that both window and buffer dimension are set to the same value; .e.g:

mode con: cols=100 lines=30

results in the following (values are the same):

  • window size: Width=160, Height=78
  • buffer size: Width=160, Height=78

By contrast, if you specify values that are too large based on the available screen size, you'll see that the window size changes to its maximum, but the buffer size is changed to the values as specified.

mode con: cols=1600 lines=900

With a screen resolution of 1280x1024, you'll get:

  • window size: Width=160, Height=78
  • buffer size: Width=1600, Height=900
查看更多
登录 后发表回答