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

[文本处理] 【已解决】计算多个文本数据的总个数的批处理代码为何出错?

本帖最后由 思想之翼 于 2023-3-3 14:39 编辑

下述批处理代码是计算多个文本数据的总个数的。
如有若干txt文本,每个文本数据格式为:数据+个数,比如下面1个文本数据是:
1 23
9 23
0 22
3 22
4 22
5 22
8 22
6 22
2 21
7 20
其表示数据1有23个,数据9有23个,数据0有22个......
现在欲将若干txt文本中数据汇总,统计各个数据的总个数,并按总个数从多到少进行排序,结果写入新建的txt文本。

比如2个txt文本,数据均为
1 23
9 23
0 22
3 22
4 22
5 22
8 22
6 22
2 21
7 20,
统计总个数,应该为
1 46
9 46
0 44
3 44
4 44
5 44
8 44
6 44
2 42
7 40
但是,运用下述代码,却得不到这样的结果。问题出在哪?恳望得到大家的帮助!
  1. @echo off&setlocal enabledelayedexpansion
  2. for %%a in (*.txt) do (
  3.   for /f "tokens=1,2 delims= " %%i in (%%a) do (
  4.     set /a #%%i+=%%j
  5.   )
  6. )
  7. for /f "tokens=1,2 delims==#" %%a in ('set #') do (
  8.    set "num=//////////%%b"
  9.    set "$!num:~-10!=%%a"
  10. )
  11. (for /f "tokens=1,2 delims==$/" %%a in ('set $^|sort /+1000') do echo %%b %%a)>ok.txt
  12. start ok.txt
复制代码
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

变量$重值时定义出错了,代码贴在你原帖里。
1

评分人数

初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

回复 2# xxpinqz


    谢谢帮助!已在原帖看到。

TOP

  1. @echo off
  2. (for /f "tokens=1,2" %%a in ('%0 bat^|sort /r') do echo %%b %%a)>ok.txt 2>nul
  3. if "%~1"=="" goto :eof
  4. for %%a in (*.txt) do (
  5.   for /f "tokens=1,2 delims= " %%i in (%%a) do (
  6.     set /a #%%i+=%%j
  7.   )
  8. )
  9. for /f "tokens=1,2 delims==#" %%a in ('set #') do echo %%b %%a
复制代码
1

评分人数

初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

这个基数 还是不要省吧
  1. @echo off
  2. for %%i in (*.txt) do (
  3.     for /f "usebackq tokens=1,2" %%j in ("%%i") do (
  4.         if defined $%%j (set /a $%%j+=%%k) else set /a $%%j=%%k+1000000000
  5.     )
  6. )
  7. (for /f "tokens=* delims=10" %%i in ('(for /f "tokens=1* delims==$" %%i in ('set ^) do @echo;%%j %%i^)^|sort/r') do (
  8.     echo;%%i
  9. ))>sort.txt
  10. pause
复制代码
1

评分人数

TOP

回复 5# terse
见笑了,原来也想改为你这写法,整了老半天出不来,又套用你们的%0的写法.
初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

返回列表