%x:~12,3%
从x变量的第12个字符开始返回3个字符。
我一直在努力实现的是使用变量而不是12
和3
。
我们说y=12
和z=3
。
然后,您无法使用%x:~%y%,%z%%
,因为CMD会认为%x:~%
是变量。
你可以做的是set var=%%x:~%y%,%z%%%
。这将扩展内部变量y
和z
,但不会扩展x
,因此var
的值为%x:~12,3%
。
现在剩下的任务是最终扩展%x:~12,3%
。我一直试图在echo
开头追加var=echo %x:~12,3%
,以便%var%
。
如果在命令行或批处理文件中,您现在使用echo %x:~12,3%
,则应执行echo命令,并展开后续表达式,但它不会,而%x:~12,3%
只会导致%x:~12,3%
打印到屏幕上,未展开。
我在想,如果你将var设置为ECHO
,那么就回应它
并将输出传递到另一个SET
命令或ECHO
命令,表达式将被扩展,但似乎SET
和html,body {height:100%; margin:0;}
.list {
width: 200px;
height:100%;
}
.list ul {
height:100%;
margin: 0;
padding:0;
list-style: none;
}
.list ul li {
border-bottom: 1px solid #000; /* Scrollbar appears with this*/
box-sizing:border-box;
height:20%;
}
.list ul li a {
text-decoration: none;
display: block;
padding: 1em 1em 1em 0.2em;
color:#000;
}
.list ul li a:after
{
content:"»";
float:right;
}
不接受通过管道输入的数据什么?
我该如何做到这一点?
答案 0 :(得分:1)
您需要启用延迟扩展。
@echo off
setlocal enabledelayedexpansion
set string=1234567890abcdef
set substring_start=12
set substring_length=3
set substring=!string:~%substring_start%, %substring_length%!
set command=echo !substring!
!command!
pause
答案 1 :(得分:1)
@ECHO OFF
SETLOCAL
SET "x=abcdefghijklmmopqrstuvwxyz"
SET /a start=12
SET /a length=3
CALL SET "var=%%x:~%start%,%length%%%"
ECHO var=%var%
CALL echo %%x:~%start%,%length%%%
SETLOCAL ENABLEDELAYEDEXPANSION
SET /a start=6
SET /a length=4
SET "var=!x:~%start%,%length%!"
ECHO var=%var%
echo !x:~%start%,%length%!
GOTO :EOF
两种方法 - 第一种使用标准模式,第二种使用delayedexpansion
。关于delayedexpansion有数百个关于SO的例子。