[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 12# meiszp
不用了,你就用你顶楼的数据测试,每行开头的空格去掉,不知你原数据每行开头是否空格?

TOP

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

回复 16# pcl_test

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

TOP

回复 17# meiszp
已添加打印输出,请到6楼重新复制。

TOP

回复 18# happy886rr

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

TOP

回复 19# meiszp
抱歉,你什么参数都不确定,我也无能为力了。

TOP

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

回复 17# meiszp

只针对顶楼7列的数据有效
  1. powershell -c "dir 1.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 default}"
  2. pause
复制代码

TOP

回复 20# happy886rr

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

TOP

PowerShell
  1. $str = [IO.File]::ReadAllText('D:\Test\a.txt', [Text.Encoding]::Default);
  2. [regex]::Replace($str, "[^`r`n]+", {param($a); $i=0; [regex]::Replace($a.Value, '\S+', {param($b); ($b.Value/++$i).ToString('e8')})})
复制代码

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

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

$map=@{'0'=10;'1'=20;'2'=30;'3'=40;'4'=50;'5'=60;'6'=70;'7'=80;'8'=90;'9'=100;'10'=110;'11'=120;……}
此处定义每列的除数,如'0'=10表示第1列除以10,'1'=20表示第2列除以20……以此类推,只要定义到最大的列即可,如最多有20列,则定义到'19'=除数,如果不对某列操作,则该列不需定义除数或定义除数为1
  1. powershell -c "$map=@{'0'=10;'1'=20;'2'=30;'3'=40;'4'=50;'5'=60;'6'=70;'7'=80;'8'=90;'9'=100;'10'=110;'11'=120};dir *.txt|?{$_ -is [IO.FileInfo]}|%%{gc $_|%%{if($_ -match '^\s*$'){$_}else{$a=($_.trim() -split '\s+');$line='';for($i=0;$i -le ($a.length-1);$i++){if($map.ContainsKey(''+$i)){$line+='  '+('{0:e8}' -f ($a[$i]/$map[''+$i]))}else{$line+=' '+$a[$i]}};$line.trim()}}|out-file ('New_'+$_.name) -encoding default}"
  2. pause
复制代码

TOP

也许有错误,错误在计算方法上也许错误文化有限看不懂这个数值
一般可以看得懂代码和移位类似,支持超过for变量占用超出分列,但是不能超过最大变量字符数
只看方法吧
  1. @echo off&&setlocal enabledelayedexpansion
  2. set "[set]=10 20 30 40 50 60 80"
  3. for /l %%n in (1,1,8192)do (
  4. for /f "tokens=1,* delims= " %%i in ("![set]!")do (
  5.   set "[set]=%%j"&&set/a "[set][n]+=1"
  6.   for /f "delims=" %%n in ("![set][n]!")do set "[set][new][%%n]=%%i"
  7. )
  8. )
  9. for /f "delims=" %%i in ('type "新建文本文档 (4).txt"')do (
  10. set "[type]=%%i"&&set "[type][n]="&&set "[true]="
  11. for /l %%n in (1,1,![set][n]!)do (
  12.   for /f "tokens=1,* delims= " %%i in ("![type]!")do (
  13.    set "[type]=%%j"&&set/a "[type][n]+=1"
  14.    for /f "delims=" %%n in ("![type][n]!")do (
  15.     set "[calc]=%%i/![set][new][%%n]!"
  16.     call :[calc]
  17.     if defined [true] (
  18.      set "[true]=![true]! ![calc][new]!"
  19.     )else (
  20.      set "[true]=![calc][new]!"
  21.     )
  22.    )
  23.   )
  24. )
  25. echo/
  26. echo,![true]!
  27. )
  28. pause
  29. exit
  30. :[calc]
  31. for /f "delims=" %%c in ('mshta.exe "vbscript:createobject("scripting.filesystemobject").getstandardstream(1).write(%[calc]%)(close)"') do set "[calc][new]=%%~c"
  32. goto:eof
复制代码
这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

这个帖子真的特么火了吗?
  1. @echo off
  2. set "r='\d+\.?\d*[Ee][-+]\d{3}'"
  3. md new\ 2>nul
  4. PowerShell -c "dir *.txt|%%{$str=[IO.File]::ReadAllText($_,[Text.Encoding]::Default);[regex]::Replace($str,\"[^^`r`n]+\",{param($a);$i=0;[regex]::Replace($a.Value,%r%,{param($b);($b.Value/++$i).ToString('e8')})})>('new\'+$_.Name)}"
  5. pause
复制代码

TOP

回复 27# /zhqsystem/zhq


   科学计数法
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

本帖最后由 523066680 于 2016-9-29 10:41 编辑
回复  523066680

谢谢,小白还是喜欢纯批,不用安装其他东西。
meiszp 发表于 2016-9-28 22:22



    哈哈哈,这句话说的好任性,潜台词是:
小白还是喜欢各位大大用纯批处理帮我服务,不要安装其他东西,that's too easy,you guys must pay more time.
1

评分人数

TOP

返回列表