Foreigner, спасибо. То, что нужно.
Iska, визуализация (имена файлов/номера строк выделяются другим цветом)
Баг:
Код:
echo >s
findstr /V /a:0d "1" "*"
Разрабы забыли в коде команды поставить точку возле эха
)
Польза в том, что я хотел на основе этого сделать разноцветный вывод в консоль.
Но у MS другие понятия о красоте.
Добавил ключ /M, а оно взяло и обесцветило имя файла
Да и все печатается с переносом каретки, BackSpace не применить.
Ничего более умного не придумал:
Код:
@echo off
SetLocal
mode con: cols=60 lines=10
Color 9A
Set Text=Maded by Dragokas
Set Color=1A
::left, right, center
Set Alignment=right
Call :ColorText "%text%" "%color%" "%Alignment%"
Call :ColorText "Working with Colors" "1d" "center"
Echo Press any key...
pause>nul
goto :eof
:ColorText %1-in.Text %2-in.Color.HEX %3-Alignment
Call :SetTextPosition "%~1" "%~3"
md "%temp%\_bin2" 2>nul
pushd "%temp%\_bin2"
echo.>"%~1"
findstr /V /a:%~2 "1" "*"
popd
rd /s /q "%temp%\_bin2"
Exit /B
:SetTextPosition %1-in.Text %2-in.Alignment
if /i "%~2" neq "left" (
call :GetConsoleWidth _ConWidth
call :var_count "%~1" _len
SetLocal EnableDelayedExpansion
if /i "%~2"=="right" (
Set /A _ind=!_ConWidth!-!_len!-1
Call :indent !_ind!
)
if /i "%~2"=="center" (
Set /A _ind=^(!_ConWidth!-!_len!^)/2
Call :indent !_ind!
)
EndLocal
)
Exit /B
:GetConsoleWidth %1-out.ConsoleWidth
For /F "skip=4 tokens=2" %%w In ('mode con') Do Set %~1=%%w& Exit /B
:var_count %1-in.Text %2.out.Len.of.Text
set _var=%~1& set _count=0
:count--
set _var=%_var:~1%
set /a _count+=1
if not defined _var (set %~2=%_count%& exit /b) else (goto :count--)
:indent %1-in.Count.of.Spaces
SetLocal EnableDelayedExpansion
::Здесь нужно заменить символ ниже на BackSpace (код 0x08) <<<<<---------
Set _BS=
Set _Spaces=
for /L %%C in (1,1,%~1) do Set "_Spaces=!_Spaces! "
<nul set /p "_Spaces=_%_BS%%_Spaces%"
EndLocal& Exit /B
4-я строка снизу Set _BS= здесь поставить символ BackSpace (0x08)
Ограничения кода:
1) В конце строки всегда печатается символ "двоеточие".
2) Нельзя печатать текст из символов, которые не могут быть использованы в имени файла |\:"<>?/*, а также . (точка) и другие служебные CMD.
3) Строка всегда заканчивается переносом каретки.
4) В сценарии используется символ BackSpace (для функции отступа), который нельзя создать обычным блокнотом ^_^