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

本帖最后由 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

回复 9# meiszp
把你测试的文本打包发上来看看

TOP

回复 12# 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

本帖最后由 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

本帖最后由 pcl_test 于 2016-9-29 23:39 编辑

回复 31# meiszp
26楼
  1. powershell -c "dir *.txt|?{$_ -is [IO.FileInfo]}|%%{gc $_|%%{if($_ -match '^\s*$'){$_}else{$a=($_.trim() -split '\s+');$line='';for($i=0;$i -le ($a.length-1);$i++){$line+='  '+('{0:e8}' -f ($a[$i]/指定的共同除数))};$line.trim()}}|out-file ('New_'+$_.name) -encoding ascii}"
  2. pause
复制代码
28楼($b.Value/++$i)改为($b.Value/指定的共同除数)

TOP

返回列表