我有许多将在循环中调用的变量。例如,我想要-要使变量超过30个字符,将其剪切为30个字符,并在末尾添加3个点。
示例:
set text = Hello world
成为:
"Hello ..."
但是,这对我有很大帮助-如果任何人都可以做更高级的操作(例如,在剪切某些字符时),请在文本中间添加点。
示例:
set text = Hello wooooooooooooooooooooooooooooooooorld "
成为:
"Hello wo...orld"
答案 0 :(得分:1)
@echo off
call :convert Hello
call :convert Hello beautiful World
call :convert Hello wooooooooooooooooooooooooooooooooorld
goto :eof
:convert
set "x=%*"
REM if the string is shorter than 10 chars, just print it and return:
if "%x:~10%" == "" echo %1 & goto :eof
REM else print first 7 chars, thee dots and the last three chars:
echo %x:~0,7%...%x:~-3%
使以下数字适应您的需要(您提到了30个字符,但没有一个示例与该数字匹配):
10
表示“前十个字符”(由于它从零开始计数,因此会检查第11个位置是否有任何字符)
7
表示三个点之前的字符数
3
表示最后一个字符
答案 1 :(得分:0)
使用%variable:~num_chars_to_skip%
使用SET
命令,我们可以编辑变量并使它删除长度超过30
个字符的所有内容。从那里我们可以获取我们创建的新变量,并从那里进行操作。
下面的代码将删除所有超过30个字符,并以text...
格式显示它们。
@ECHO OFF
::Edit string one with 30 char limit. String has 40 Chars.
SET String=0123456789012345678901234567890123456789
SET Result=%String:~0,30%
ECHO %Result%...
::Edit string one with 30 char limit. String has 90 Chars.
SET String=012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
SET Result=%String:~0,30%
ECHO %Result%...
::Edit string one with 30 char limit. String has 6 Chars.
SET String=0123456
SET Result=%String:~0,30%
ECHO %Result%...
PAUSE
GOTO :EOF
在此处了解有关语法子字符串的更多信息:https://ss64.com/nt/syntax-substring.html