Batch file 如何在变量字符串替换中使用环境变量作为长度?

Batch file 如何在变量字符串替换中使用环境变量作为长度?,batch-file,Batch File,我有以下代码: set name=James echo %name:~0,4% 并显示变量的前4个字母:Jame 但是我想为显示的字母数插入一个变量,我可以使用set进行更改。大概是这样的: set num=3 set name=James echo %name:~0,%num%% 结果应该显示变量name的字符串值的第一个num字符 有什么方法可以得到想要的结果吗?您可以在echo语句周围添加一层%,然后调用echo它 @echo off set num=3 set name=James

我有以下代码:

set name=James
echo %name:~0,4%
并显示变量的前4个字母:
Jame

但是我想为显示的字母数插入一个变量,我可以使用
set
进行更改。大概是这样的:

set num=3
set name=James
echo %name:~0,%num%%
结果应该显示变量
name
的字符串值的第一个
num
字符


有什么方法可以得到想要的结果吗?

您可以在echo语句周围添加一层
%
,然后
调用echo

@echo off
set num=3
set name=James
call echo %%name:~0,%num%%%
或者您可以简单地
启用DelayedExpansion

@echo off
setlocal enabledelayedexpansion
set num=3
set name=James
echo !name:~0,%num%!

有关
delayedexpansion
的更多帮助,只需从cmdline运行
setlocal/?

了解
call echo%%name:~0,%num%%%
查看发布在上的所有答案查看此答案:。