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

回复 1# meiszp
纯批模拟科学计数法
  1. @echo off
  2. SETLOCAL ENABLEDELAYEDEXPANSION
  3. (for /f "tokens=1,2,*" %%a in ('type test.txt') do (
  4. for /f "tokens=1,2 delims=e" %%A in ("%%a") do (
  5. set "str=%%B"
  6. if "!str:~0,1!"=="-" (
  7. set/a "str=1!str:~1!+1"&set "str=-!str:~-3!"
  8. ) else (
  9. if "!str!"=="+000"   (
  10. set "str=-001"
  11. ) else (
  12. set/a "str=1!str:~!-1"&set "str=+!str:~-3!"
  13. )
  14. )
  15. set "lie1=  %%Ae!str!"
  16. )
  17. for /f "tokens=1,2 delims=e" %%A in ("%%b") do (
  18. set "str=%%B"&set "ptr=%%A"&set "ptr=!ptr:.=!"
  19. if !ptr! geq 200000000 (set/a ptr/=2) else (set/a ptr=!ptr!0/2)
  20. if !ptr! geq 500000000 (set Mark=1) else (set Mark=0)
  21. if "!str:~0,1!"=="-" (
  22. set/a "str=1!str:~!+1+Mark"&set "str=-!str:~1!"
  23. ) else (
  24. if "!str!"=="+000"   (
  25. if !Mark! equ 1 (set "str=-001") else (set "str=-002")
  26. ) else (
  27. set/a "str=1!str:~1!-1-Mark"&set "str=+!str:~1!"
  28. )
  29. )
  30. set "lie2=  !ptr:~0,1!.!ptr:~1!e!str!"
  31. )
  32. echo !lie1:~-16! !lie2:~-16! %%c
  33. ))>new.txt
  34. start new.txt
  35. set/p=修改完毕!
复制代码

TOP

本帖最后由 523066680 于 2016-9-27 20:11 编辑

Perl,安装请咨询搜索引擎。
  1. open READ, "<:raw", "data.txt";
  2. my @divi = map { $_ * 10 } (1 .. 20);  #10 20 30 ... 200
  3. my $i;
  4. while ($e = <READ> )
  5. {
  6.     $e =~s/^\s+//;      #开头空格清除
  7.     $e =~s/\r?\n$//;    #换行符清除
  8.     $i = 0;
  9.     @arr =  map { $divi[$i++] * $_  } split(/\s+/, $e);
  10.     grep { printf("% e  ", $_) } @arr;
  11.     print "\n";
  12. }
  13. close READ;
复制代码
相比之下我这个有点肿,可能有些知识没掌握
输出结果没有验证过
  1. -6.705523e-006   9.132935e+006   2.069218e+006  -1.526766e+007   1.043421e+007  -2.945188e+007   2.172848e+007  
  2. 5.000000e-001   9.238625e+006   4.093383e+006  -1.436891e+007   1.036955e+007  -2.850440e+007   2.380366e+007  
  3. 9.999932e-001   9.967751e+006   7.828288e+006  -1.409941e+007   1.014586e+007  -2.763844e+007   2.568582e+007  
  4. 1.500000e+000   1.016323e+007   1.191119e+007  -1.432231e+007   9.860271e+006  -2.663541e+007   2.749764e+007  
  5. 1.999993e+000   9.631241e+006   1.518526e+007  -1.545164e+007   9.571748e+006  -2.537090e+007   2.923343e+007  
  6. 2.500000e+000   8.920181e+006   1.689968e+007  -1.754524e+007   9.413743e+006  -2.387482e+007   3.087182e+007  
  7. 2.999993e+000   8.686865e+006   1.620382e+007  -1.962749e+007   9.421916e+006  -2.225997e+007   3.236232e+007  
  8. 3.500000e+000   9.163929e+006   1.410576e+007  -2.072869e+007   9.521359e+006  -2.060406e+007   3.358839e+007  
  9. 3.999993e+000   9.702406e+006   1.152561e+007  -2.226319e+007   9.665547e+006  -1.895729e+007   3.468742e+007  
复制代码

TOP

本帖最后由 pcl_test 于 2018-4-12 15:08 编辑
  1. powershell -c "dir *.txt|?{$_ -is [IO.FileInfo]}|%%{gc $_|%%{$a=($_.trim() -split '\s+');('{0:e8} {1:e8} ' -f ($a[0]/10),($a[1]/20))+($a[2..($a.length-1)] -join ' ')}|out-file ('New_'+$_.name) -encoding default}"
  2. pause
复制代码

TOP

本帖最后由 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-29 23:40 编辑
  1. #*第三方http://www.bathome.net/s/tool/index.html?key=gawk
  2. #*&cls&dir /a-d/b *.txt|gawk -f "%~f0"&pause&exit
  3. BEGIN{
  4.     folder="结果";
  5.     system("md \""folder"\" 2>nul");
  6.     list="1=10,2=20,3=30,4=40,5=50,6=60,7=70,8=80,9=90,10=100,11=110,12=120";
  7.     #此处定义每列的除数,如1=10表示第1列除以10,2=20表示第2列除以20……以此类推,
  8.     #只要定义到最大的列即可,如最多有20列,则定义到20=除数,
  9.     #如果不对某列操作,则该列不需定义除数或定义除数为1
  10.     split(list,a,",");
  11.     for(i=1;i<=length(a);i++){
  12.         split(a[i],b,"=");
  13.         map[b[1]]=b[2];
  14.     }
  15.     while(getline file>0){
  16.         while(getline<file>0){
  17.             if($0~/^[[:space:]]*$/){
  18.                 print>folder"\\New_"file;
  19.             }else{
  20.                 for(i=1;i<=NF;i++){
  21.                     printf i<NF?"%.8e  ":"%.8e\n",map[i]==""?$i:$i/map[i]>folder"\\New_"file;
  22.                 }
  23.             }
  24.         }
  25.     }
  26. }
复制代码

TOP

返回列表