[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
来一个兼容性很差的...抛砖了哈:
  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

来一个列排序版的,用的是比较简陋的排序方式,列数一多就蛋疼了...
  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

来一个不那么蛋疼的,只要在 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

有想法,不过也是不严谨,3 0 0 与 2 2 1 平方和相同

TOP

不过如果列数与指数相同,好像没想到有反例可以证明这种算法不严谨

TOP

返回列表