标题: [文本处理] 批处理 set /a 赋值为何不对?怎么保留小数呢? [打印本页]
作者: delab-1 时间: 5 天前 16:51 标题: 批处理 set /a 赋值为何不对?怎么保留小数呢?
我遇到一个赋值问题,想把下面的第八列数据都除以100,就是amout1对应的数据。
数据文件(temp2.csv)如下:
yearmonth,com_code,com_name,partner_code,partner_name,province_code,province_name,amount1,unit1,dollar,custom_value,charges
202301,6111201000,,313,Albania,39,"Cleveland, OH",1,dozens,277,273,4
202301,6111202000,,402,Argentina,12,"Miami, FL",144,dozens,19831,19787,44
202301,6111205000,,402,Argentina,12,"Miami, FL",229,dozens,34038,33963,75
202301,6111206010,,402,Argentina,12,"Miami, FL",75,dozens,10476,10453,23
202301,6111206070,,402,Argentina,12,"Miami, FL",42,dozens,4443,4433,10
202301,6110909014,,103,Bangladesh,24,"Baltimore, MD",128,dozens,19260,18341,919
202301,6110909090,,103,Bangladesh,39,"Cleveland, OH",167,dozens,25295,24975,320
202301,6110909090,,103,Bangladesh,36,"New York, NY",3383,dozens,355741,334614,21127
程序如下:- if exist chk.csv del chk.csv
- setlcal enabledelayedexpansion
- for /f "skip=1 delims=, tokens=1-12" %%a in (temp2.csv) do (
- echo %%h
- set /a value=%%h/100
- echo !value! >>chk.csv
- )
复制代码
set /a value=%%h/100,仅仅取值整数,而小数点后数值不能保留,这个怎么能够保留小数呢?
作者: aloha20200628 时间: 5 天前 18:56
本帖最后由 aloha20200628 于 2025-1-3 18:59 编辑
回复 1# delab-1
批处不支持小数(浮点)运算,故须调用其他脚本的浮点运算功能,以下代码(存为 test.bat 运行,与 *.csv 文件同目录)是调用 powershell 功能的版本...- @echo off &powershell "gc 'temp2.csv'|select -skip 1|%%{($_.split(',')[8])/100}">"chk.csv"
- type "chk.csv" &pause &exit/b
复制代码
作者: delab-1 时间: 4 天前 21:34
回复 2# aloha20200628
感谢,看来这个只能使用powershell的命令了,现在在学习中
作者: Batcher 时间: 3 天前 10:26
回复 1# delab-1
批处理浮点计算
http://bbs.bathome.net/thread-3322-1-1.html
http://bbs.bathome.net/thread-3372-1-1.html
作者: delab-1 时间: 3 天前 19:05
回复 2# aloha20200628
在请教一下:如何利用上面的powershell的管道命令,将所有的表值都输出,而且其中doller对应列的数值都除以100呢?目前程序将处理后的dollar数值写出来了,其它变量没有写出来。多谢多谢
作者: aloha20200628 时间: 3 天前 20:16
回复 5# delab-1 - @echo off &powershell "gc 'temp2.csv'|select -skip 1|%%{$a=$_.split(',');$a[10]/=100;$a -join ','}">"chk.csv"
- type "chk.csv" &pause &exit/b
复制代码
作者: delab-1 时间: 前天 09:25
回复 6# aloha20200628
太感谢了,非常有帮助!
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |