[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
  1. @echo off&setlocal enabledelayedexpansion
  2. for /l %%i in (1,1,100) do set "var=0!var!"
  3. for /f %%i in (1.txt) do (
  4. set str=!var!%%i
  5. set .!str:~-100! !random!=a
  6. )
  7. for /f "delims=.= " %%i in ('set .') do for /f "tokens=* delims=0" %%i in ("%%i") do echo %%i
  8. pause>nul
复制代码
2

评分人数

    • keen: set竟然有排序的作用,强,学习了!PB + 6
    • pusofalse: PB + 6

TOP

原帖由 batman 于 2008-8-5 20:24 发表

谢谢兄弟指出,我的第二个代码已修正,其实3楼的代码并不通用,如下测试结果:
测试文本:
1.txt

29324200852651210028213071109630551685419682237192661910031596813525985
13919282422170532368385309906 ...

是的  我在3楼的代码正如兄指出的通用性不是很好 于是改为多步算法 用100多KB的文件试下  效率似乎高多了 一样没临时文件
不知什么原因用兄 二楼的通用代码试那100多KB的文件在我这里出错了
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "skip=1 tokens=1* delims=:" %%i in ('findstr /o ".*" 2.txt') do (
  3.     set/a m+=2,n=%%i-m-t,t=%%i-m
  4.      set str=%%j
  5.      if !n! gtr !d! set/a d=n
  6. )
  7. for /f "skip=1 delims=:" %%i in ('^(echo %str%^&echo.^)^|findstr /o ".*"') do set/a m=%%i-3
  8.     if %m% gtr %d% set/a d=m
  9.     for /l %%i in (1,1,%d%) do set "var=$!var!"
  10.     for /f "delims=" %%i in (2.txt) do (
  11.     set str=!var!%%i
  12.     set .!str:~-%d%! $!random! !random! !random!=a
  13. )
  14. for /f "delims=.=$" %%i in ('set .') do echo %%i
  15. pause
复制代码
漏了最后行的$ 补上
唉!还是发现我的计算还有问题  继续修正
重复行和空格问题 只能处理一项 等有完善方案
我想这样处理重复行和空格问题 也好  就一个分割符的问题了  文本中有分隔符 就处理不了

[ 本帖最后由 terse 于 2008-8-7 01:44 编辑 ]

TOP

原帖由 huahua0919 于 2008-8-6 18:14 发表
多次测试没发现Set排序会出错@echo off&setlocal enabledelayedexpansion
for /f %%i in (a.txt) do (
set .0000000000000000000000000000000000000000000%%i=a
)
for /f "tokens=1 delims=.=" %%i in ('set .') ...

看你取后90位 以及补上的43个0  你测试的文件行字符如大于90 ;文件行最大字符和最小字符差大于43 理论上有差错
还有 从大排到小  可以在FOR里试    set _^|sort/r  这样可以少个FOR吧

TOP

返回列表