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

Windows Batch - delete last characters from variable

我需要从 Windows 批处理

中的变量中删除最后 3 个字符
set string=abcdefghij

我需要以下输出:

abcdefg

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

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

输出:

defghij

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

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

稍后注意: 非常不同,它需要从多行文本中删除最后一个字符,而我需要从变量中删除最后一个字符。

就用负索引

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

输出:

1234567
890