[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 求助批处理截取字符串小数点前后的1位或多位字符

比如这3串数字:
1、123.45678
2、1234.5678
3、12345.678

我想要截取的内容:
第1个数为:123.4         (取小数点后1位)
第2个数为:1234.56     (取小数点后2位)
第3个数为:12345       (只取整数)

因为我遇到需要处理的数字不是固定的,所以想知道以上3个例子的截取/分割字符的方法。

关于第3个,网上搜了下,找到分割字符的方式,不过好像只能保留特定字符后面的,不能留前面的,尴尬了~~~
  1. @echo off
  2. set a=12345.678
  3. echo 原始a:%a%
  4. echo 删除变量a中的第一次出现的.及其前面的所有字符
  5. echo %a:*.=%
  6. pause
复制代码

  1. @echo off
  2. rem 取小数点后n位
  3. set n=3
  4. for /f "tokens=1,* delims=." %%a in ("123.456789") do (
  5. set aft=%%b
  6. setlocal enableDelayedExpansion
  7. echo;%%a.!aft:~,%n%!
  8. endlocal
  9. )
  10. pause
复制代码
QQ 33892006

TOP

回复 1# cc5511

用for循环可以,不过复杂点:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set x=12345.678
  4. for /f "tokens=1,2 delims=." %%a in ("%x%") do (
  5.     set str1=%%a
  6.     set str2=%%b
  7.     echo !str1!.!str2:~0,1!
  8.     echo !str1!.!str2:~0,2!
  9.     echo !str1!
  10. )
  11. pause
复制代码

TOP

返回列表