2013-02-28 3 views
3

сегодня я здесь, чтобы дать вам новый вызов!Изменение положения курсора/курсора

Просто шутить: моя проблема - это карет командной строки. [ «Весь» рассказ в нижней части "]

Короткий рассказ долго, я должен двигаться позиции CARET к ECHO новой линии в том же положении. Это потому, что я должен напечатать только несколько строк [о трех линии], делая CLS каждый раз, когда он мигает из-за скорости исполнения

я попробовал некоторые вещи, также используя <NUL SET /P "=InsertHereString", но всегда есть проблема, что я уже ECHO-е изд что не исчезает

.!

Итак, вот мой запрос: есть способ переместить этот мигающий кусок пикселя, позволяющий написать строку, начиная с fr om определенной точки CMD?

НОМЕР: «Вся» история заключается в том, что я сделал своего рода установщик в пакетном режиме, копируя и связывая некоторые приложения со съемного диска. Теперь я также сделал строку состояния, в которой говорится, что сделано. В строке состояния я хочу показать, что на самом деле делает программа, но когда есть [например] много файла в каталоге для ссылки или копирования, он делает список вместо стирания предыдущей вещи, поэтому на момент. Я просто ECHO ing a " - Done!" или строка " - Failed!" рядом с основной строкой. Я просил об этом, потому что на другом языке [C++] я нашел метод, который использовал для моделирования PacMan. Он состоит из метода, который требует X и переменной Y, которые идентифицируют положение каретки в декартовой плоскости, где позиция (0,0) - это левый верхний угол командной строки.

Спасибо за ваше время!

+2

Вы могли бы найти [эту тему] (http://stackoverflow.com/questions/11972249/cls-clear-a- однострочный). – rojo

+1

Я уже пробовал с помощью метода 'CursorPos', но exe не работает в Windows 8! – ingroxd

+0

Ломать новости: Я также пробовал метод «CursorPos» в семи окнах, но возникает одна и та же проблема, и она не работает. Метод 'ASCII' приводит к устареванию для окон восемь [я должен попробовать в семь ...]. Любая другая идея? – ingroxd

ответ

2

BG v2.5 (юникод)

http://batch.xoo.it/t2238-BG-exe-Utility-for-Batch-Games.htm

BG.EXE является инструментом для цветной печати текста в cmd.exe. Он принимает регулярные выражения для печати символов ascii. Он также имеет полезные функции.

Локализовать столбец строк :: найти позицию курсора в указанной строке и столбце, основанный на нулевом индексе.

Звоните: bg Locate 0 0 и курсор прыгает туда.


Или

CursorPos.ехе

http://www.dostips.com/forum/viewtopic.php?f=3&t=3428

Получить или установить позицию курсора.

CursorPos [[±] Col [±] строка]

Если параметр не задан, возвращает текущее положение курсора, как седловины + (строка < < 16) в ERRORLEVEL.

Если какая-либо координата имеет знак, то указанное положение относится к текущему току .

Если курсор перемещен, код Ascii символа в новой позиции - , возвращенный в ERRORLEVEL.

+0

Вот и все! Я уже пробовал CursorPos, но по той или иной причине он даже не запускается в моем компьютере ... BG решил мою проблему, спасибо большому парню! – ingroxd

0

ANSICON обеспечивает ANSI escape-последовательности для консольных программ Windows. Он обеспечивает те же функциональные возможности, что и для ANSI.SYS для MS-DOS.

https://github.com/adoxa/ansicon

+0

'ANSICON' имеют проблемы с драйверами x64 от nvidia, и я большую часть времени работаю на компьютерах с nvidia x64. Прошу прощения за сложность проблемы, но я хочу сделать исполняемый файл пакета в каждой [Windows] SO, начиная с XP x86, до восьми x64! – ingroxd

2

Требуется немного, чтобы привыкнуть к использованию cursorpos. Вот доказательство концепции. Не уверен, похоже ли это на то, что вы имели в виду, но я думаю, что обман, который вы имеете в виду, возможен. Все возможно, если хватит пива.

Сохраните это как pacman.bat и запустите его. Результат впечатляет: P (Moreso, если ваша консоль использует шрифт TrueType.)

@echo off 
setlocal enabledelayedexpansion 

Rem cursorpos and colorshow created by Antonio Perez Ayala 
Rem http://www.dostips.com/forum/viewtopic.php?f=3&t=3428 
call :heredoc cursorpos >cursorpos.hex && goto endCursorpos 
4D5A900003[3]04[3]FFFF[2]B8[7]40[35]B0[3]0E1FBA0E00B409CD21B8014CCD21546869732070726F6772616D2063616E6E6F74 
2062652072756E20696E20444F53206D6F64652E0D0D0A24[7]55B5B8FD11D4D6AE11D4D6AE11D4D6AE9FCBC5AE18D4D6AEED 
F4C4AE13D4D6AE5269636811D4D6AE[8]5045[2]4C010200EB84E24F[8]E0000F010B01050C0002[3]02[7]10[3]10[3]20[4]40[2]10 
[3]02[2]04[7]04[8]30[3]02[6]03[5]10[2]10[4]10[2]10[6]10[11]1C20[2]28[84]20[2]1C[27]2E74657874[3]4201[3]10[3]02[3]02[14]20[2]60 
2E7264617461[2]F6[4]20[3]02[3]04[14]40[2]40[8]E806[3]50E81301[2]558BEC83C4E06AF5E81201[2]8945FC8D45E650FF75FCE8 
FD[3]668B45EC668945E4E8BC[3]E8DB[3]803E0075058B45EAEB5C803E3D750646E8C6[3]668B4DEAE84A[3]8945EAE8B5[3]803E 
007418803E2C750646E8A5[3]668B4DE4E829[3]668945EC8B5DEA53FF75FCE8AE[3]8D45E650536A018D45E350FF75FCE895[3]0F 
B645E3C9C333C032DB33D28A164680FA2B740880FA2D750980CB0280CB018A164680FA30720F80FA39770A80EA306BC00A03 
C2EBE9F6C301740BF6C302740366F7D86603C14EC3CCCCCCCCCCCCCCCCCCCCCCCCCCE847[3]8BF08A06463C2275098A06463C 
2275F9EB0C8A06463C20740484C075F54EC38A06463C2074F94EC3CCFF2514204000FF2500204000FF2504204000FF250820 
4000FF250C204000FF25102040[191]6E20[2]8C20[2]9C20[2]BA20[2]D620[2]6020[6]4420[10]E820[3]20[22]6E20[2]8C20[2]9C20[2]BA 
20[2]D620[2]6020[6]9B004578697450726F6365737300F500476574436F6E736F6C6553637265656E427566666572496E666F 
[2]6A0147657453746448616E646C65[2]380252656164436F6E736F6C654F757470757443686172616374657241006D025365 
74436F6E736F6C65437572736F72506F736974696F6E[2]E600476574436F6D6D616E644C696E6541006B65726E656C33322E 
646C6C[268] 
:endCursorpos 

call :heredoc colorshow >colorshow.hex && goto endShow 
4D5A900003[3]04[3]FFFF[2]B8[7]40[35]B8[3]0E1FBA0E00B409CD21B8014CCD21546869732070726F6772616D2063616E6E6F74 
2062652072756E20696E20444F53206D6F64652E0D0D0A24[7]5549FA721128942111289421112894219F3787211A289421ED 
088621132894215269636811289421[16]5045[2]4C0103001DDBEB50[8]E0000F010B01050C0006[3]04[7]10[3]10[3]20[4]40[2]10 
[3]02[2]04[7]04[8]40[3]04[6]03[5]10[2]10[4]10[2]10[6]10[11]2420[2]28[84]20[2]24[27]2E74657874[3]DE04[3]10[3]06[3]04[14]20[2]60 
2E7264617461[2]3201[3]20[3]02[3]0A[14]40[2]402E64617461[3]20[4]30[3]02[3]0C[14]40[2]C0[472]E806[3]50E8A304[2]558BEC81C4 
E8DFFFFFFC6AF5E8A404[2]8945FC6800304000FF75FCE88804[2]8B1D043040008D85E8DFFFFF50536A018D45FA50FF75FCE8 
7E04[2]668B45FA66A316304000D41086C4D510668945F88DBDF8DFFFFF89BDF4DFFFFFE81304[2]E83204[2]8A064684C00F84 
4803[2]3C2F0F858C[3]2BBDF4DFFFFF74186A008D85E8DFFFFF5057FFB5F4DFFFFFFF75FCE85F03[2]8BBDF4DFFFFF8A064684 
C00F840F03[2]3C20750C668B45FA66A316304000EBA73C2F750C668B45F866A316304000EB972C303C0976082C073C0F7602 
2C208A264684E40F84D602[2]80FC20741286C42C303C0976082C073C0F76022C20D51066A316304000E95CFFFFFF3C227520 
8A064684C00F84A502[2]3C227405880747EBEC8A06463C2274F4E938FFFFFF3C300F82C6[3]3C390F87BE[3]E8A102[2]3C2A74 
083C5874043C7875278ADC468A06463C300F826102[2]3C390F875902[2]E87A02[2]0FB6CC8AC3F3AAE9F0FEFFFF80FC207379 
80FC09751F8B0D0430400003CF2B8DF4DFFFFF83E10783E908F7D9B020F3AAE9C7FEFFFF2BBDF4DFFFFF741A506A008D85E8 
DFFFFF5057FFB5F4DFFFFFFF75FCE83D02[2]588BBDF4DFFFFF88276A008D85E8DFFFFF506A01FFB5F4DFFFFFFF75FCE8E302 
[2]6800304000FF75FCE8BE02[2]E972FEFFFF882747E96AFEFFFF2BBDF4DFFFFF74186A008D85E8DFFFFF5057FFB5F4DFFFFF 
FF75FCE8E101[2]8BFE4F33DB889DF2DFFFFF8A063C3A74118885F3DFFFFF3C20746084C0745C46EBE9889DF2DFFFFFC6060046 
8A06463C2D7509C685F2DFFFFF02EB0B3C2B750AC685F2DFFFFF018A06463C300F827001[2]3C390F876801[2]E86901[2]8885 
F3DFFFFF3C20740884C00F855101[2]84E40F841001[2]8ADCC60600680020[2]8D85F8DFFFFF5057E80702[2]85C00F84F1[3]85 
DB0F84CF[3]3BC30F84C7[3]7C2D80BDF2DFFFFF00741DF685F2DFFFFF01750A2BC30185F4DFFFFFEB0A2BC3D1E80185F4DFFF 
FF8BC3E998[3]2BD88BBDF4DFFFFF03F889BDECDFFFFF50B0208BCBF3AA80BDF2DFFFFF007443F685F2DFFFFF02741C6A018D 
85E8DFFFFF5053FFB5ECDFFFFFFF75FCE8C9[3]33DBEB1E8BFBD1EF2BDF6A018D85E8DFFFFF5057FFB5ECDFFFFFFF75FCE8A7 
[3]588BF86A018D85E8DFFFFF5057FFB5F4DFFFFFFF75FCE88C[3]6A028D85E8DFFFFF5053FFB5ECDFFFFFFF75FCE874[3]EB1A 
8BF86A008D85E8DFFFFF5057FFB5F4DFFFFFFF75FCE858[3]8A85F3DFFFFF88068DBDF8DFFFFF89BDF4DFFFFFE9A8FCFFFF2B 
BDF4DFFFFF74186A008D85E8DFFFFF5057FFB5F4DFFFFFFF75FCE81F[3]0FB745FAC9C3240F8AE08A06463C30720C3C397708 
2C30D50A8AE0EBED4EC3558BEC6A00FF7514FF7510FF750CFF7508E8B2[3]8B4D1066837D180172137708010D18304000EB46 
030D18304000894D10578B7D0C66A116304000F366AB8B0D04304000FF751451FF7510FF750CFF7508E876[3]5F6800304000FF 
7508E84A[3]C705183040[5]C9C21400CCCCCCCCCCCCCCCCE853[3]8BF08A06463C2275098A06463C2275F9EB0C8A06463C2074 
0484C075F54EC38A06463C2074F94EC3CCFF2500204000FF2504204000FF2508204000FF250C204000FF2510204000FF2514 
204000FF2518204000FF251C2040[291]7020[2]7E20[2]9C20[2]B620[2]C620[2]E420[2]F420[2]1221[6]4C20[10]2421[3]20[22]7020[2]7E 
20[2]9C20[2]B620[2]C620[2]E420[2]F420[2]1221[6]9B004578697450726F6365737300F500476574436F6E736F6C6553637265 
656E427566666572496E666F[2]1301476574456E7669726F6E6D656E745661726961626C6541006A0147657453746448616E 
646C65[2]370252656164436F6E736F6C654F7574707574417474726962757465[2]EE025772697465436F6E736F6C654100F2 
025772697465436F6E736F6C654F757470757441747472696275746500E600476574436F6D6D616E644C696E6541006B6572 
6E656C33322E646C6C[720] 
:endShow 

call :heredoc hexchar >hexchar.vbs && goto endHexchar 
Rem Hex digits to Ascii Characters conversion 
Rem Antonio Perez Ayala - Apr/14/2012 

Dim line,index,count 
line = WScript.StdIn.ReadLine() 
While line <> "" 
    index = 1 
    While index < len(line) 
     If Mid(line,index,1) = "[" Then 
     index = index+1 
     count = 0 
     While Mid(line,index+count,1) <> "]" 
      count = count+1 
     WEnd 
     For i=1 To Int(Mid(line,index,count)) 
      WScript.StdOut.Write Chr(0) 
     Next 
     index = index+count+1 
     Else 
     WScript.StdOut.Write Chr(CByte("&H"&Mid(line,index,2))) 
     index = index+2 
     End If 
    WEnd 
    line = WScript.StdIn.ReadLine() 
WEnd 
:endHexchar 

:: Create cursorpos.exe and colorshow.exe 
for %%I in (cursorpos colorshow) do (
    cscript /nologo /B /E:VBS HexChar.vbs < "%%I.hex" > "%%I.exe" 
    del %%I.hex 
) 
del hexchar.vbs 

:: --------------------------------------------------- 
:: Supporting applications all created. Now use them. 
:: --------------------------------------------------- 

call :DefineColorCodes 

set /P I="Waiting... "<NUL 
cursorpos 
call :GetCoords Cols Lines 

for /l %%A in (1, 1, 3) do (

    colorshow /%Black% " " /%Yellow%%Black% "(<" /%White% " o o o o o" 

    for /l %%I in (2, 1, 15) do (
     call :sleep 100 
     set /a pos=%Cols% + %%I 
     cursorpos !pos! %Lines% 
     set /a e=%%I %% 2 
     if #!e!==#1 (
      colorshow /%Black% " " /%Yellow%%Black% "(<" 
     ) else colorshow /%Black% " " /%Yellow%%Black% "(-" 
    ) 

    for /l %%I in (15, -1, 2) do (
     call :sleep 100 
     set /a pos=%Cols% + %%I 
     cursorpos !pos! %Lines% 
     set /a e=%%I %% 2 
     if #!e!==#1 (
      colorshow /%Yellow%%Black% ">)" /%Black% " " 
     ) else colorshow /%Yellow%%Black% "-)" /%Black% " " 
    ) 
    cursorpos=%Cols%,%Lines% 

) 

:: --------------------------------------------------- 
:: End of main script 
:: --------------------------------------------------- 
echo Done. 
del cursorpos.exe colorshow.exe sleep.vbs 
goto :EOF 

:: --------------------------------------------------- 
:: Subroutines 
:: --------------------------------------------------- 

:GetCoords Cols= Lines= 
set /A "%1=%errorlevel%&0xFFFF, %2=(%errorlevel%>>16)&0xFFFF" 
exit /B 

:DefineColorCodes 
set HexDigit=ABCDEF 
set c=-1 
for %%c in (Black Blue Green Aqua Red Purple Brown White 
      Grey LBlue LGreen LAqua LRed LPurple Yellow BWhite) do (
    set /A c+=1 
    for %%C in (!c!) do set %%c=!HexDigit:~%%C,1! 
) 
exit /B 

:sleep <ms> 
if not exist sleep.vbs (echo Wscript.Sleep^(Wscript.Arguments^(0^)^)>sleep.vbs) 
cscript /nologo sleep.vbs %1 
goto :EOF 

:heredoc <uniqueIDX> 
setlocal enabledelayedexpansion 
set go= 
for /f "delims=" %%A in ('findstr /n "^" "%~f0"') do (
    set "line=%%A" && set "line=!line:*:=!" 
    if defined go (if #!line:~1!==#!go::=! (goto :EOF) else echo(!line!) 
    if "!line:~0,13!"=="call :heredoc" (
     for /f "tokens=3 delims=>^ " %%i in ("!line!") do (
      if #%%i==#%1 (
       for /f "tokens=2 delims=&" %%I in ("!line!") do (
        for /f "tokens=2" %%x in ("%%I") do set "go=%%x" 
       ) 
      ) 
     ) 
    ) 
) 
goto :EOF 
+0

Эй, спасибо за место, эта партия создает CursorPos, и она работает ... Не знаю почему, но CursorPos.exe.hex найден в [link] (http://www.dostips.com/ forum/viewtopic.php? f = 3 & t = 3428) не делает хороший exe для моего компьютера ... Возможно, я что-то делаю неправильно ... – ingroxd

+0

Это мои 11 секретных трав и специй. Это или моя [heredoc magic] (http://stackoverflow.com/a/15032476/1683264). :) – rojo

Смежные вопросы