Как получить приглашение типа unix в windows (партия) - PullRequest
0 голосов
/ 16 февраля 2020

Я пытаюсь создать оболочку dos, которая отображает приглашение unix / linux. Код:

@echo off
:hi
set tmpdrv=%cd:~0,2%

if %homedrive% == %tmpdrv% (
  set drvmatch=1
) else (
  set drvmatch=0
)
set "MYSTRING=abcdef!%%^^()^!"
set MYSTRING=%homepath%
:strlen
(echo "%MYSTRING%" & echo.) | findstr /O . | more +1 | (set /P RESULT= & call exit /B %%RESULT%%)
set /A STRLENGTH=%ERRORLEVEL%-5
set tmppath1=%cd:~2%
CALL set tmppath2=%%tmppath1:~0,%STRLENGTH%%%
if %homepath% == %tmppath2% (
  set homematch=1
) else (
  set homematch=0
)

set homepathmatch=0
if %homepath% == %tmppath2% (
    if %homedrive% == %tmpdrv% (
    set homepathmatch=1
    )
)

if %homepathmatch%==1 (
    REM set /a STRLENGTH=%STRLENGTH%+2
        CALL set newpath=%%tmppath1:~%STRLENGTH%%%
    set newpath1=~%newpath%
)
set newpath2=%newpath1:\=/%
:check_Permissions

 net session >nul 2>&1
 if %errorLevel% == 0 (
 set "username2=root"
 ) else (
 set username2=%username%
 )
set /p %command%="%username2%@%computername%:%newpath2%$ "
%command%
goto :hi

Я хочу, чтобы он отображал имя каталога, как в unix / linux, но отображает ~. Что не так в моем коде? Можете ли вы помочь мне улучшить его?

1 Ответ

0 голосов
/ 16 февраля 2020

Скорее всего, не совсем, с подсказками, указывающими c ситуационная модификация подстроки, но Метод установки подсказки:.

@ECHO OFF & Setlocal EnableDelayedExpansion & TITLE %~n0
cls & MODE 1000 & CD %userprofile%\desktop


    For /F "tokens=* Delims=\" %%A In ("%userprofile%") Do (
        Set "C_Prompt=%%A"
        Set "C_Prompt=!C_Prompt:\=!"
        Set "C_Prompt=!C_Prompt:Users=!"
    For %%A in (a,b,c,d,e,f,g,h,i) Do (Set "C_Prompt=!C_Prompt:%%A:=!")
    )
    Set DirPath=:!CD:\=/!
    For %%A in (a,b,c,d,e,f,g,h,i) Do (Set "DirPath=!DirPath:%%A:=!")
    Set "C_Prompt=!C_Prompt!@!computername!!DirPath! $$ "

prompt !C_Prompt!

Start /B cmd.exe

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

Этот связанный макрос будет обновлять sh Запрос при изменении рабочего каталога, однако действие по расширению команд внутри пользователя определенная переменная может привести к неожиданным результатам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...