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


1+2+3=2+2+2

TOP

每一行元素相同且都是数字, 相同的数字之和相等,元素都必然相同
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1-3" %%a in (1.txt) do (
  4. set /a num=%%a+%%b+%%c
  5. for /f "tokens=1-4" %%i in ("!num! %%a %%b %%c") do (
  6. set /a _%%i+=1
  7. if "!_%%i!"=="1" echo %%j %%k %%l
  8. )
  9. )
  10. pause
复制代码

TOP

来一个不那么蛋疼的,只要在 str 中给够足量的变量名,应可兼容任意列数:
  1. @echo off&setlocal enabledelayedexpansion
  2. set str=a b c
  3. ::abc 分别代表三个变量名,表示只有三列
  4. for %%a in (!str!) do (
  5. for /f %%b in ("!str:*%%a=!") do (
  6. if defined list set "list=!list!%%a "
  7. set "list=%%a !list!"
  8. set list=!list:%%a =%%b-%%a !
  9. )
  10. )
  11. ::获取用于 if 判断的顺序表
  12. for /f "delims=" %%a in (1.txt) do (
  13. set tmp=%%a
  14. for %%b in (%str%) do (
  15. for /f %%c in ("!tmp!") do set %%b=%%c
  16. set tmp=!tmp:~2!
  17. )
  18. rem 设置每列的值到对应变量
  19. for %%d in (%list%) do (
  20. for /f "tokens=1,2 delims=-" %%b in ("%%d") do (
  21. if !%%b! gtr !%%c! set /a %%b=!%%c!,%%c=!%%b!
  22. )
  23. )
  24. if not defined _!a!_!b!_!c! (
  25. echo %%a
  26. set _!a!_!b!_!c!=_
  27. )
  28. )
  29. pause
复制代码

TOP

来一个列排序版的,用的是比较简陋的排序方式,列数一多就蛋疼了...
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=1-3" %%a in (1.txt) do (
  3. set /a a=%%a,b=%%b,c=%%c
  4. for %%d in (c-b b-a c-b) do (
  5. for /f "tokens=1,2 delims=-" %%e in ("%%d") do (
  6. if !%%e! gtr !%%f! set /a %%e=!%%f!,%%f=!%%e!
  7. )
  8. )
  9. if not defined _!a!_!b!_!c! (
  10. echo %%a %%b %%c
  11. set _!a!_!b!_!c!=_
  12. )
  13. )
  14. pause
复制代码

TOP

回复 4# else


多谢,看来2楼的代码不能用了,我的数据很重要,不能漏掉。

TOP

回复 2# CrLf


多谢版主
请问兼容性差是指什么?

TOP

来一个兼容性很差的...抛砖了哈:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in (1.txt) do (
  3.    set /a n=0
  4.    for %%b in (%%a) do set /a "n+=1<<%%b"
  5.    if not defined _!n! echo %%a
  6.    set _!n!=_
  7. )
  8. pause
复制代码

TOP

返回列表