Board logo

标题: [文本处理] 创建空文本的批处理函数createnew [打印本页]

作者: plp626    时间: 2011-6-25 22:35     标题: 创建空文本的批处理函数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进制的话,更为快速,有兴趣者继续。。。
作者: Batcher    时间: 2011-6-25 23:31

fsutil命令可以吗?
作者: bluewing009    时间: 2011-6-26 01:26

如果只是生成个空白的话,fsutil file createnew file.txt 900效果更好一些
作者: lllsoslll    时间: 2011-6-26 01:57

楼上。。。。

楼主已经说:
:: 生成空文件
:: 功能相当于 fsutil file createnew 文件名 字节数


看来看客就只是看了标题,没看楼主的代码!




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2