Ken*_*Ken 38 windows string-manipulation batch-file
假设我有一个值,例如“Abc_123”,它存储在批处理 (cmd) 文件的变量中。我想最终得到一个只包含“123”的变量。有没有内置的方法来做到这一点?
我对方法或性能并不十分挑剔,只要它内置于典型的 Windows (Vista/2008) 系统中即可。
Joh*_*n T 49
使用子字符串语法:
C:\Users\John>set string=Abc_123
C:\Users\John>echo %string%
Abc_123
C:\Users\John>echo %string:~4,3%
123
Run Code Online (Sandbox Code Playgroud)
小智 13
如果您只想要下划线之后的所有内容(并且不一定知道字符串的长度或下划线的位置,但可以依靠只有一个下划线),请尝试:
for /f "tokens=2 delims=_" %%a in ("%STRING%") do (
set AFTER_UNDERSCORE=%%a
)
Run Code Online (Sandbox Code Playgroud)
基本上,您的字符串将使用下划线作为分隔符 (delims=_) 拆分为标记。只有第二个(tokens=2)会被(作为变量 %%a)传递给 for 循环。由于在这种情况下您正在处理单个字符串,因此循环只会运行一次。
如果要保存下划线前后的内容,请尝试:
for /f "tokens=1,2 delims=_" %%a in ("%STRING%") do (
set BEFORE_UNDERSCORE=%%a
set AFTER_UNDERSCORE=%%b
)
Run Code Online (Sandbox Code Playgroud)
请注意,%%a 是拆分的第一个标记的变量;%%b 是拆分的第二个标记的变量。
set var1=Abc_123
set var2=%var1:*_=%
echo %var2%
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
264715 次 |
| 最近记录: |