批量获取用户输入的最后两个字母以外的所有字母

Batch get all but last two letters of user input

我有以下代码,

@echo off
cls
set /p word=
set string=%word%
set temp_str=%string%
set str_len=0
:lengthloop
if defined temp_str (
set temp_str=%temp_str:~1%
set /A str_len += 1
goto lengthloop )
echo %str_len%
set str_len=num
SET var2=%string:~0,-%num%
echo %var2%
SET var3=%string:~-2%
echo %var3%
pause

如何获取用户输入的最后两个字母以外的所有字母,使用以下方法不起作用

SET var2=%string:~0,-%num%

你可以试试这个:

@echo off
setlocal EnableDelayedExpansion
set /p word=
set string=%word%
set "num=2"
SET "var2=!string:~0,-%num%!"
echo %var2%
pause

或者这个,如果你已经在展开的块中:

@echo off
setlocal EnableDelayedExpansion
set /p word=
set string=%word%
set "num=2"
FOR /L %%G IN (%num%,1,%num%) DO SET "var2=!string:~0,-%%G!"
echo %var2%
pause
set "var2=%stringL~0,-2%"

应该努力获取 string 的值,除了最后 2 个字符到 var2.

(参见

set /?

来自文档的提示 - 事实上,除了最后 2 个字符之外的所有字符都作为示例显示)