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

[文本处理] 创建空文本的批处理函数createnew

本帖最后由 plp626 于 2011-6-25 22:43 编辑

前言:任意给定一个整数,如何快速生成一个文件,使得这个文件的体积等于这个整数值?
  1. for /l %%a in (1 1 整数值)do set/p=A<nul>>file.txt
  2. :: 算法复杂度O(n)
复制代码
  1. :: 如果整数值小于64*1024那么这个最速
  2. :: 算法复杂度O(1)
  3. more /t整数值 tab1.txt>file.txt
复制代码
想到了N等分点的问题,并将这个算法用于生产空文本文件:
算法的复杂度为O(log(n));
  1. :: 生成空文件
  2. :: 功能相当于 fsutil file createnew 文件名 字节数(fsutil 需要管理员权限)
  3. :: 算法:二分法
  4. :: 外部命令依赖: findstr(调用1次;用于生成ASCII 码0x00的字符)
  5. :createnew <filename> <num> //by plp626
  6. setlocal EnableDelayedExpansion
  7. cmd/u/cecho.>0.tmp
  8. findstr/vrc:$ 0.tmp>1.tmp
  9. Set/a a=%2&if !a! leq 0 set/p=<nul>"%~2"&exit/b
  10. Set t1=+1.tmp&Set t0=&Set s=
  11. for /l %%a in (1 1 30)do if !a! GEQ 2 (
  12. set/at=a%%2,a/=2&Set "s=" "$+$ $2" "$2^!t!t!^! $!s!"
  13. )
  14. for %%a in ("1.tmp $.tmp!s:$=$.tmp!")do copy/b %%~a>nul
  15. if exist "%~1" del/a "%~1"
  16. ren $.tmp "%~1"
  17. del 0.tmp 1.tmp $.tmp $.tmp2
  18. endlocal&goto:eof
复制代码
如果用16进制的话,更为快速,有兴趣者继续。。。
1

评分人数

返回列表