找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 28056|回复: 2

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

[复制链接]
发表于 2020-8-28 21:32:45 | 显示全部楼层 |阅读模式
比如这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
复制代码
发表于 2020-8-29 09:40:36 | 显示全部楼层
回复 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
复制代码
发表于 2020-8-29 10:14:08 | 显示全部楼层
  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
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 05:14 , Processed in 0.015480 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表