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

[数值计算] 批处理如何将文本里的多行数字相加并输出总和等于指定数值时所在的行数和行内容 ...

本帖最后由 pcl_test 于 2016-11-24 08:36 编辑

逐行计算输出和值所在的行
12
10
8
4
6
15
11
12
4
6
8
1
11
7
14如果是 13
6
6


逐行相加计算和值输出特定数值的行~
例子:
目的 得到和为 129的行数 和所在的行的内容 【15行 14】
如果是13!【16行 6 并和值134】一起显示输出
!!
其实要用乘法乘法会涉及到大数这~~¥%……&
关于大数的那个帖子真真是#¥%&*%

本帖最后由 ads350668398 于 2016-11-13 21:40 编辑
  1. echo
  2. for /f "tokens=1-3 delims=  " %%a in (mss.txt) do (
  3.     set /a "m+=%%a"
  4. )
  5. set m
  6. pause
复制代码
关于【code】 网页不能自己加么

TOP

本帖最后由 ads350668398 于 2016-11-14 16:25 编辑

没有办法
这样可以不
12
10 8
4 6 15
........
金字塔形
每一行计算
和129相比较
  1. @echo off&setlocal enabledelayedexpansion
  2. set s
  3. :a
  4. set /a s+=1
  5. (for /f %%1 in (mss.txt)do (set /a wind+=1
  6. if !wind! leq %s% set /p=%%1 <nul
  7. if !wind!==%s% echo.&&set wind=0))>1232.txt&pause&goto a
复制代码
怎么输出金字塔

TOP

谁会做金字塔

TOP

本帖最后由 pcl_test 于 2016-11-15 10:06 编辑
  1. PUBLIC=C:\Users\Public
  2. SESSIONNAME=Console
  3. SystemDrive=C:
  4. SystemRoot=C:\Windows
  5. TEMP=C:\Users\ADMINI~1\AppData\Local\Temp
  6. TMP=C:\Users\ADMINI~1\AppData\Local\Temp
  7. USERDOMAIN=PC201605020431
  8. USERNAME=Administrator
  9. USERPROFILE=C:\Users\Administrator
  10. windir=C:\Windows
  11. windows_tracing_flags=3
  12. windows_tracing_logfile=C:\BVTBin\Tests\installpackage\csilogfile.log
  13. ALLUSERSPROFILE=C:\ProgramData
  14. ……
复制代码
请按任意键继续. . .
这是什么意思 我在做实验 脚本 怎么出了这个东西??
仔细发现 我输出的【M】终于是按着逐行相加的 但是怎么会这么多英文 在中间》???????????
大神指点啊 为什么是在 9行 也就是逐行加到【m=82后】???
1

评分人数

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. echo %date%%time%
  3. @echo off
  4. for /f "tokens=1-2" %%i in (mss.txt) do (set /a m+=%%i & set %m% & ping -n 2 127.1>nul)
  5. pause
复制代码

TOP

回复 9# GNU


    谢谢大神门的关注 我加了一行  if /i !m! geq 129 echo !s! !m!
输出的是 大于129的【所有行】 !!要做到只输出 大于等于129的【一行】怎么做啊??

TOP

本帖最后由 ads350668398 于 2016-11-15 19:24 编辑
  1. for /f "tokens=1-6" %%i in (!ab!.txt) do (
  2.     set /a s+=1
  3.     set /a m+=%%i
  4.     if /i !m! geq %aa% echo !s! %%i% !m!
  5. )  
  6. set ii=!i!
  7. for /f "delims=" %%1 in ("%s% %ii% %m%") do (
  8.    
  9.      echo %%1
复制代码
关于变量【%%i】的传递和正确写法  晕菜了  
%i %%i%% %!i!%  %%%i%%%
用【set ii=!i!】 和不用对后面的FOR的【%%i】的写法。。。有变化么

TOP

回复 14# GNU


    谢谢 括号里面就OK了

TOP

第二次运算错误为什么

  1. @echo &setlocal enabledelayedexpansion
  2. set /p aa=和值
  3. set /p ab=要读取的文本名
  4. echo %date%%time%
  5. setlocal enabledelayedexpansion
  6. echo %date%%time%
  7. for /f "tokens=1-6 delims= " %%i in (!ab!.txt) do (
  8.    set /a s+=1
  9.    set /a m+=%%i
  10.   if /i !m! geq %aa% echo !s! %%i% !m! >>1h.txt
  11.   
  12. )  
  13. for /f "delims=" %%1 in (1h.txt) do (
  14. echo %%1 >>1hh.txt
  15. start 1hh.txt
  16. del 1h.txt
  17.      goto a
  18. )
  19. :a
  20. ::pause&call 逐行相加4.bat&exit
复制代码
为什么第二次三次运行的时候 不能正确 运算
ab.txt
1
2
5
9
8
6
7
9
5

TOP

我好菜鸟啊 555

TOP

回复 17# GNU


    if /i !m! geq %aa% echo !s! %%i%     echo %%%j% !m! >>1h.txt
求困惑 %i 和%j中间输出为什么没有空格啊??

TOP

本帖最后由 ads350668398 于 2016-12-2 08:54 编辑

回复 20# GNU


   a. txt原本
1 13  2
2 16  2
3 15  1
4 3  1
5 1  2
6 3  1
7 16  2
8 9  1
输出字符中间为什么没有空格啊?
  1. @echo &setlocal enabledelayedexpansion
  2. for /f "tokens=2-6 delims= " %%i in (a.txt) do (
  3.    set /a s+=1
  4.    set /a m+=%%j
  5.   if /i !m! geq 5 echo !s! %%i%     echo %%%j% !m! >>1h.txt
  6.   
  7. )  
复制代码
输出
3 151 5
4 31 6
5 12 8
6 31 9
7 162 11
8 91 12

【希望结果】
3 15 1 5
4 3 1 6
5 1 2 8
6 3 1 9
7 16 2 11
8 9 1 12

TOP

回复 23# GNU

set kk=
    if /i !m! geq %aa% echo !s! %%i%   %%kk%   %%j% !m! >>1h.txt
这个空给KK 也能想的结果 晕了

TOP

回复 25# GNU


    恩

TOP

返回列表