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

[文本处理] 批处理如何对文本里各列数据分别除以指定数值

本帖最后由 meiszp 于 2016-9-29 11:18 编辑

文件夹下有许多数据文件(扩展名为txt或指定),文件内容为多列数据(下面为7列,但实际可能更多),想对每列除以一个数,比如第1列除以10,第2列除以20等等。
求大侠赐教。

-6.70552254e-007  4.56646750e+005  6.89739219e+004 -3.81691500e+005  2.08684141e+005 -4.90864719e+005  3.10406906e+005
  5.00000007e-002  4.61931250e+005  1.36446094e+005 -3.59222750e+005  2.07390922e+005 -4.75073250e+005  3.40052250e+005
  9.99993235e-002  4.98387563e+005  2.60942938e+005 -3.52485344e+005  2.02917281e+005 -4.60640719e+005  3.66940344e+005
  1.50000006e-001  5.08161344e+005  3.97039625e+005 -3.58057656e+005  1.97205422e+005 -4.43923438e+005  3.92823375e+005
  1.99999332e-001  4.81562063e+005  5.06175219e+005 -3.86291063e+005  1.91434969e+005 -4.22848281e+005  4.17620406e+005
  2.50000000e-001  4.46009031e+005  5.63322500e+005 -4.38631031e+005  1.88274859e+005 -3.97913656e+005  4.41026063e+005
  2.99999326e-001  4.34343250e+005  5.40127375e+005 -4.90687344e+005  1.88438328e+005 -3.70999531e+005  4.62318875e+005
  3.49999994e-001  4.58196469e+005  4.70192063e+005 -5.18217250e+005  1.90427172e+005 -3.43401031e+005  4.79834125e+005
  3.99999321e-001  4.85120313e+005  3.84186875e+005 -5.56579813e+005  1.93310938e+005 -3.15954906e+005  4.95534531e+005


数据文件见网盘 http://share.weiyun.com/6bdcb931f8703b3830a9c9d711f5e053

本帖最后由 meiszp 于 2016-9-27 15:47 编辑

回复 2# pcl_test
恕我小白,请问第一行是要我安装gawk?第二行是让我在DOS窗口复制下面命令运行吗?
&cls&dir /a-d/b *.txt|gawk -f "%~f0"&pause&exit
有没有纯批的命令呢?谢谢!

TOP

本帖最后由 pcl_test 于 2016-9-28 22:27 编辑

回复 4# pcl_test

大神,您好!您写的大代码我复制新建了个.bat文件运行,结果如下。多了一列,结果也不是我想要的。还有就是每列都要除以一个数字,比如共有20列,1列/1、2列/2、3列/3……20列/20。
1

评分人数

TOP

回复 5# 523066680

谢谢,小白还是喜欢纯批,不用安装其他东西。

TOP

回复 11# pcl_test
不在自己的电脑上,我明天上传吧。麻烦大神了。

TOP

回复 6# happy886rr
谢谢!完全看不懂。在代码中看不出我要除的数字。您写的大代码我复制新建了个.bat文件运行,没有结果。

TOP

回复 8# WHY
谢谢!不过每列没有除以一个数。

TOP

本帖最后由 pcl_test 于 2018-4-12 15:09 编辑

回复 16# pcl_test

是空格的原因,试验了下没有问题,不过不记得有没有空格, 明天看看。
还有大神,我举的例子只对前两列除了个数,但有好多列

TOP

回复 18# happy886rr

谢谢,可以对例子实现。
但这个好像只能对文件名为test.txt的一个文件使用。我是有几百个这样的数据文件,每个文件有好多列,最多的是20列,每列可能都会除以一个不确定数,所以我要穷举出所以列。

TOP

回复 20# happy886rr

每列除的数可以先代替,用时自己修改。比如有20列,1列/1、2列/2、3列/3……20列/20。
如果有10列,是不是把代码里的20,也可能是个控制代码,修改到10,后面相应的1列/1、2列/2、3列/3……10列/10。

TOP

回复 21# pcl_test
谢谢!如果不是7列的话,应该是更改下面红色部分了。我试验了下没问题,非常感谢。
powershell -c "dir  *.txt|?{$_ -is [IO.FileInfo]}|%%{gc $_|%%{$a=($_.Trim() -split '\s+');'{0:e8} {1:e8} {2:e8} {3:e8} {4:e8} {5:e8} {6:e8}' -f ($a[0]/10),($a[1]/20),($a[2]/30),($a[3]/40),($a[4]/50),($a[5]/60),($a[6]/70)}|out-file ('New_'+$_.name) -encoding ascii}"
pause

TOP

回复 23# WHY

谢谢!在D:\Test\a.txt下试用了下,没什么改变,没有对每列除以一个数。

TOP

回复 26# pcl_test

多谢大神,数据已经上传了,前面是有空格的,但21楼和26楼代码完美解决,26楼的更简洁。
还想好奇的问问,如果每列除的数相同,是不是还可以简单些?

TOP

回复 28# WHY

谢谢!您的代码似乎也对文件数据做了修改,但看不懂,如果想更改除数,不知道怎么做。

TOP

返回列表