Board logo

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

作者: 思想之翼    时间: 2013-6-17 11:55     标题: 【已解决】计算多个文本数据的总个数的批处理代码为何出错?

本帖最后由 思想之翼 于 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
复制代码

作者: xxpinqz    时间: 2013-6-17 12:21

变量$重值时定义出错了,代码贴在你原帖里。
作者: 思想之翼    时间: 2013-6-17 12:22

回复 2# xxpinqz


    谢谢帮助!已在原帖看到。
作者: xxpinqz    时间: 2013-6-17 16:30

  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
复制代码

作者: terse    时间: 2013-6-17 16:44

这个基数 还是不要省吧
  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
复制代码

作者: xxpinqz    时间: 2013-6-17 17:06

回复 5# terse
见笑了,原来也想改为你这写法,整了老半天出不来,又套用你们的%0的写法.




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2