【发布时间】:2020-05-31 09:10:03
【问题描述】:
我正在尝试制作显示 unix/linux 提示符的 dos shell。代码是:
@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 中一样显示目录名称,但它显示~。我的代码有什么问题?你能帮我改进一下吗?
【问题讨论】:
-
PROMPT命令用于进行该设置。我没有看到你在代码中使用它。 -
另外,在设置此变量时:
set /p %command%="%username2%@%computername%:%newpath2%$ "您尝试扩展 %command%,但尚未定义命令 - 所以您实际上尝试将字符串分配给空变量 - 这总是会失败
标签: linux shell batch-file unix