Answers:
使用子字符串语法:
C:\Users\John>set string=Abc_123
C:\Users\John>echo %string%
Abc_123
C:\Users\John>echo %string:~4,3%
123
%string:~%start%,%len%%
CALL
,例如CALL SET _substring=%%_donor:~%_startchar%,%_length%%%
如果您只想在下划线之后输入所有内容(不一定知道字符串的长度或下划线在哪里,而是可以仅依靠一个下划线),请尝试:
for /f "tokens=2 delims=_" %%a in ("%STRING%") do (
set AFTER_UNDERSCORE=%%a
)
基本上,您的字符串将使用下划线作为定界符(delims = _)拆分为标记。仅第二个(令牌= 2)将(作为变量%% a)传递给for循环。由于在这种情况下只处理单个字符串,因此循环只会运行一次。
如果要在下划线之前和之后保存内容,请尝试:
for /f "tokens=1,2 delims=_" %%a in ("%STRING%") do (
set BEFORE_UNDERSCORE=%%a
set AFTER_UNDERSCORE=%%b
)
请注意,%% a是拆分的第一个标记的变量;%% b是拆分的第二个标记的变量。
如果您发现批处理语言的功能不足以执行您想要的操作-并且可能不会花很长时间到达这一点-您可以使用Windows PowerShell。默认情况下,不是所有版本的Windows都安装此程序,但是您可以免费下载。
如果您不喜欢PowerShell语言,则可以使用Perl。不过,您必须在所有系统上安装它。也有其他人。
set var1=Abc_123
set var2=%var1:*_=%
echo %var2%
*
贪婪?我使用了很好的ol' IF NOT ... GOTO :replace
,但是如果有更好的方法,那就更好了。
_
,则循环到最后一个,然后set var
help set
如在批处理文件中创建子字符串的最佳方法是什么?在StackOverflow上。