2016-01-24 2 views
-2

некоторого время назад я был прибегая к помощи, чтобы узнать, как я мог бы сделать меню пакетного с более «профессиональным взглядом», вместо того, чтобы использовать символы, такие как:меню партии набросков и дизайн

|=====| 
|-----| 
|_____| 

сделать очертание aroudn меню в пакетном режиме. , но мне не повезло. сегодня я случайно нашел этот сайт:

http://http-server.carleton.ca/~dmcfet/menu.html 

и объясняет, что с помощью MS-DOS (Edit.com) Я могу это сделать. но как мой компьютер 64-битный выигрыш 10. У меня точка edit.com так .... как я мог сделать это вид меню вручную? (printing special characters shown on left side of the header "STEP 3, Lines, Lines, Lines.")

+0

Вы должны смотреть [здесь] (http://stackoverflow.com/a/28426204/5022761) –

+0

благодарит человека. это точно, что им нужно .D –

+0

Нет проблем, но это было на первой странице google. Вы должны поместить немного больше исследований в свои вопросы. –

ответ

-2

ИСПРАВЛЕНИЕ: , чтобы создать такое меню. вам нужно будет использовать редактор, такой как notepad ++ , чтобы открыть новый файл notepad ++. затем перейти в формат и выбрать западную европейскую кодировку OEM-US.

затем просто перейдите сюда: https://en.wikipedia.org/wiki/Box-drawing_character
и скопируйте вставьте символы, которые вы хотите для своего меню, в блокнот ++ и сохраните.

пример: Отображается в Notepad ++:

echo         ╔════════════════════════════╗ 
echo         ║Bill register/database Menu ║ 
echo         ╠════════════════════════════╣ 
echo         ║ 1. -Register a bill  ║ 
echo         ║ 2. -Check Bill Info  ║ 
echo         ║ 3. Set payment   ║ 
echo         ╚════════════════════════════╝ 

отображается в обычном блокноте:

echo         ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» 
echo         ºBill register/database Menu º 
echo         ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ 
echo         º 1. -Register a bill  º 
echo         º 2. -Check Bill Info  º 
echo         º 3. Set payment   º 
echo         ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ 

так, как вы можете видеть. он работает с обычным блокнотом. но его легче работать с ним в блокноте ++, поскольку он отображает то, на что он на самом деле выглядит.

+0

что я просто не понимаю: как этот пост может быть опущен 2 раза? ненавидеть много или что-то еще? Я отправил идеальный ответ на мою собственную проблему ... LOL –

1

Вот набор меню + PowerShell, над которым я работал. Задайте значения в пакетной части, и материал PowerShell автоматически изменит размер и изменит положение по мере необходимости. Когда выбор сделан, буфер консоли восстанавливает прежнее содержимое, эффективно исчезая из меню.

Это выглядит следующим образом:

arrow navigated menu

Вот код. Сохраните его с расширением .bat.

<# : Batch portion 
@echo off & setlocal enabledelayedexpansion 

set "menu[0]=Format C:" 
set "menu[1]=Send spam to boss" 
set "menu[2]=Truncate database *" 
set "menu[3]=Randomize user password" 
set "menu[4]=Download Dilbert" 
set "menu[5]=Hack local AD" 

set "default=0" 

powershell -noprofile "iex (gc \"%~f0\" | out-string)" 
echo You chose !menu[%ERRORLEVEL%]!. 

goto :EOF 
: end batch/begin PowerShell hybrid chimera #> 

$menutitle = "=== MENU ===" 
$menuprompt = "Use the arrow keys. Hit Enter to select." 

$maxlen = $menuprompt.length + 6 
$menu = gci env: | ?{ $_.Name -match "^menu\[\d+\]$" } | %{ 
    $_.Value.trim() 
    $len = $_.Value.trim().Length + 6 
    if ($len -gt $maxlen) { $maxlen = $len } 
} 
[int]$selection = $env:default 
$h = $Host.UI.RawUI.WindowSize.Height 
$w = $Host.UI.RawUI.WindowSize.Width 
$xpos = [math]::floor(($w - ($maxlen + 5))/2) 
$ypos = [math]::floor(($h - ($menu.Length + 4))/3) 

$offY = [console]::WindowTop; 
$rect = New-Object Management.Automation.Host.Rectangle ` 
    0,$offY,($w - 1),($offY+$ypos+$menu.length+4) 
$buffer = $Host.UI.RawUI.GetBufferContents($rect) 

function destroy { 
    $coords = New-Object Management.Automation.Host.Coordinates 0,$offY 
    $Host.UI.RawUI.SetBufferContents($coords,$buffer) 
} 

function getKey { 
    while (-not ((37..40 + 13 + 48..(47 + $menu.length)) -contains $x)) { 
     $x = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown').VirtualKeyCode 
    } 
    $x 
} 

# http://goo.gl/IAmdR6 
function WriteTo-Pos ([string]$str, [int]$x = 0, [int]$y = 0, 
    [string]$bgc = [console]::BackgroundColor, [string]$fgc = [Console]::ForegroundColor) { 
    if($x -ge 0 -and $y -ge 0 -and $x -le [Console]::WindowWidth -and 
     $y -le [Console]::WindowHeight) { 
     $saveY = [console]::CursorTop 
     $offY = [console]::WindowTop  
     [console]::setcursorposition($x,$offY+$y) 
     Write-Host $str -b $bgc -f $fgc -nonewline 
     [console]::setcursorposition(0,$saveY) 
    } 
} 

function center([string]$what) { 
    $what = " $what " 
    $lpad = " " * [math]::max([math]::floor(($maxlen - $what.length)/2), 0) 
    $rpad = " " * [math]::max(($maxlen - $what.length - $lpad.length), 0) 
    WriteTo-Pos "$lpad $what $rpad" $xpos $line blue yellow 
} 

function menu { 
    $line = $ypos 
    center $menutitle 
    $line++ 
    center " " 
    $line++ 

    for ($i=0; $item = $menu[$i]; $i++) { 
     # write-host $xpad -nonewline 
     $rtpad = " " * ($maxlen - $item.length) 
     if ($i -eq $selection) { 
      WriteTo-Pos " > $item <$rtpad" $xpos ($line++) yellow blue 
     } else { 
      WriteTo-Pos " $i`: $item $rtpad" $xpos ($line++) blue yellow 
     } 
    } 
    center " " 
    $line++ 
    center $menuprompt 
    1 
} 

while (menu) { 

    [int]$key = getKey 

    switch ($key) { 

     37 {} # left or up 
     38 { if ($selection) { $selection-- }; break } 

     39 {} # right or down 
     40 { if ($selection -lt ($menu.length - 1)) { $selection++ }; break } 

     # number or enter 
     default { if ($key -gt 13) {$selection = $key - 48}; destroy; exit($selection) } 
    } 
} 
+0

sry. но мне это не нужно. но спасибо за усилия. мне удалось найти ответ, и я разместил его внизу. –

+0

Ну, я работал над этим некоторое время. Я не писал это только для этого, так что неважно, если вы его не используете. – rojo

+0

все в порядке ^^ это хорошо работает. кроме того, это немного медленно. он не подходит для моего использования ^^ (плюс я не хочу украсть то, что делали другие люди) ... я действительно не получаю много обучения из этого. –