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

[文本处理] [已解决] 批处理如何删除小数点

本帖最后由 KLL 于 2022-1-16 23:54 编辑

求助 批处理如何删除 最后一列小数点
比如a.txt为
原内容如下  分隔号逗号
1269,圣杯,136.00,137.50,136.00,137.00,2819.17
1271,晨晖生技,60.80,61.40,59.20,61.40,730.4
1293,利统,39.05,39.55,38.10,38.50,64.505

生成后b.txt
1269,圣杯,136.00,137.50,136.00,137.00,281917
1271,晨晖生技,60.80,61.40,59.20,61.40,7304
1293,利统,39.05,39.55,38.10,38.50,64505


Thanks

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in (a.txt) do (
  4.     set str=%%~xi
  5.     echo,%%~ni!str:~1!
  6. )
  7. pause
复制代码
1

评分人数

TOP

回复 2# qixiaobin0715


    CMD在某些情况下, 解决问题还是很有优势的, 但是貌似有延迟变量, 把代码合成一行, 执行就出错

TOP

回复 3# 5i365
为什么要合成一行呢,那样代码就会难懂。比如上面代码合成一行应当这样:
  1. @echo off&setlocal enabledelayedexpansion&(for /f "delims=" %%i in (a.txt) do set str=%%~xi&echo,%%~ni!str:~1!)&pause
复制代码
1

评分人数

    • KLL: 乐于助人技术 + 1

TOP

本帖最后由 5i365 于 2022-1-16 14:06 编辑

回复 4# qixiaobin0715


    因为我要在一个软件里使用, 这个软件只支持单行的命令行
合并多行为单行的情况太复杂了,甚至变量名都要改, 有时干脆就直接用powershell了, 因为那软件支持多行的powershell
但有时, 一个功能用cmd实现起来, 确实干净利索

您合并CMD多行为一行, 有什么诀窍吗? 能分享一下吗

TOP

万分感谢!qixiaobin0715兄 协助

TOP

回复 5# 5i365
以前看过 CrLf 写的代码,有一些是写成一行的,为了弄懂代码表达的意思,花费了一些精力,没有专门研究过。
在介绍for循环的帖子http://bbs.bathome.net/thread-2189-1-1.html变量延迟一节中,有一句话是说批处理的执行过程的:自上而下,逐条执行。我觉得要充分理解,对于将代码合成一行是有很大的帮助的。
一般来说要将代码合成一行总是要用到变量延迟的,主要是for循环有时会出问题,注意从for开始直到结束需要整个语句用括号括起来,并与前后语句使用&连接。

TOP

回复 5# 5i365


    换成PowerShell是明智之举,建议不要在单行CMD上面浪费时间了。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 7# qixiaobin0715


    感谢分享!

TOP

回复 8# Batcher


    老大所言及是!!

TOP

返回列表