Windows批处理-从变量中删除最后字符



我需要删除Windows批处理中变量的最后3个字符

set string=abcdefghij

我需要以下输出:

abcdefg

我可以从变量中删除前3个字符:

set newstring=%string:~3,100%
echo %newstring%

输出:

defghij

但是我如何从字符串中删除最后3个字符-并将结果存储到变量中?

我可以通过使用sed(来自GnuWin32)显示没有最后3个字符的字符串,但我还需要将结果存储到另一个变量中。我需要一个比将结果存储在文件中然后将文件读入变量(set/p newstring=<file.txt)>

更好的解决方案。后注:这个问题非常不同,它需要从多行文本中删除最后一个字符,而我需要从变量中删除最后一个字符。

使用负索引

set longtext=1234567890
:: Remove last 3 characters
echo %longtext:~0,-3%
:: show last three characters
echo %longtext:~-3%

输出:

1234567
890

最新更新