[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]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

回复 2# ads350668398


    不能。网页无法自动判断。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

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

回复 6# ads350668398


    脚本发出来看看,可能不小心执行了 set 命令。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

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

回复 8# ads350668398
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. echo %date%%time%
  4. for /f "tokens=1-2" %%i in (mss.txt) do (
  5.     set /a m+=%%i
  6.     echo !m!
  7. )
  8. pause
复制代码

TOP

setlocal enabledelayedexpansion 启用变量延迟扩展之后,for循环内部的变量应该使用 !m! 而不是 %m%

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

回复 11# ads350668398


符合条件之后就跳出for循环
  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% (
  5.         echo !s! %%i !m!
  6.         goto :next
  7.     )
  8. )
  9. :next
  10. pause
复制代码
1

评分人数

TOP

回复 12# ads350668398


set ii=!i! 这种写法可能无法实现你希望的目的
%%i 在1到5行代码之间有效
for循环结束之后的第六行%%i没有值,用!i!也没有值。

TOP

回复 14# GNU


    谢谢 括号里面就OK了

TOP

返回列表