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

TOP

本帖最后由 batman 于 2011-4-27 08:10 编辑

因为cmd中的变量名+值的字节数上限为8190,当文本足够大时,代码中的str变量就会发生溢出,修改如下:
  1. @echo off&setlocal enabledelayedexpansion
  2. set /a num=1
  3. for /f "delims=" %%a in (a.txt) do (
  4.      set /a n+=1,m=n%%100
  5.      if !m! equ 0 set /a num+=1
  6.      for %%b in (!num!) do set "str_%%b="%%a" !str_%%b!"
  7. )
  8. (for /l %%a in (%num%,-1,1) do (
  9.       for %%b in (!str_%%a!) do echo %%~b
  10. ))>tem
  11. del /q a.txt&ren tem a.txt
  12. start a.txt
复制代码
1

评分人数

***共同提高***

TOP

本帖最后由 batman 于 2011-4-27 01:25 编辑

9# wh1234567
代码中少写了一个do,笔误,已改正,应该能处理了。

你如果不是小白应该能够发现这个问题改正啊,晕。。。。
***共同提高***

TOP

14# wc726842270
处理超大文本不考虑效率是不行的,如果文本足够大,你这个代码估计最后没有结果出来。。。
***共同提高***

TOP

返回列表