Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 如何根据cmd中的另一个变量从字符串变量回显单个数字_Batch File_Cmd - Fatal编程技术网

Batch file 如何根据cmd中的另一个变量从字符串变量回显单个数字

Batch file 如何根据cmd中的另一个变量从字符串变量回显单个数字,batch-file,cmd,Batch File,Cmd,我想从分配给变量的字符串中回显单个数字,但回显数字的位置将由另一个变量确定。 比如: set a=ABCDEF set b=3 echo %a:~%b%,1% 如果您想回显ABCDEF字符串中的第三个数字,则与以下内容相同: echo %a:~3,1% 我尝试这样做的原因是,用户会多次以不同的值提示b变量。您需要启用delayedexpansion 请参见cmd控制台中的set/?和setlocal/? @echo off setlocal enabledelayedexpansion se

我想从分配给变量的字符串中回显单个数字,但回显数字的位置将由另一个变量确定。
比如:

set a=ABCDEF
set b=3
echo %a:~%b%,1%
如果您想回显
ABCDEF
字符串中的第三个数字,则与以下内容相同:

echo %a:~3,1%

我尝试这样做的原因是,用户会多次以不同的值提示b变量。

您需要
启用delayedexpansion

请参见cmd控制台中的
set/?
setlocal/?

@echo off
setlocal enabledelayedexpansion
set a=ABCDEF
set b=3
echo !a:~%b%,1!

另外,我们从0开始计数,因此
b=3
将导致
echo
ing
D
一个示例显示了这两种方法:

@Echo关闭
SetLocal DisableDelayedExpansion
设置“str=VALUE”
回显您的字符串是%str%
Choice/C 12345/M“选择位置数字”
设置/A int=%ERRORLEVEL%-1
调用回显您的位置数字与字符%%str:~%int%,1%%匹配
超时2/NoBreak>Nul
Choice/C 12345/M“选择位置数字”
设置/A int=%ERRORLEVEL%-1
SetLocal EnableDelayedExpansion
回显您的位置数字与字符匹配!str:~%int%,1!
端部
超时-1

这是“动态子字符串”。请查看“确定”。请下次更好地编辑您的文章,使用编辑器上的按钮。例如,
{}
按钮可以轻松格式化代码块。您的语句绝对不正确。如果要回显第三位数字,请使用
echo%a:~2,1%
。这当然意味着,如果最终用户正在输入
%b%
的内容,例如,您需要使用
set/a
首先从中扣除
1
。至于你的问题,你有两个选择,要么启用延迟扩展,要么使用,
echo!a:~%b%,1
,或使用这样的调用语句,
call echo%%a:~%b%,1%%
。在中介绍了这种类型的管理,尽管主题不同。。。