标题: [文本处理] 创建空文本的批处理函数createnew [打印本页]
作者: plp626 时间: 2011-6-25 22:35 标题: 创建空文本的批处理函数createnew
本帖最后由 plp626 于 2011-6-25 22:43 编辑
前言:任意给定一个整数,如何快速生成一个文件,使得这个文件的体积等于这个整数值?- for /l %%a in (1 1 整数值)do set/p=A<nul>>file.txt
- :: 算法复杂度O(n)
复制代码
- :: 如果整数值小于64*1024那么这个最速
- :: 算法复杂度O(1)
- more /t整数值 tab1.txt>file.txt
复制代码
想到了N等分点的问题,并将这个算法用于生产空文本文件:
算法的复杂度为O(log(n));- :: 生成空文件
- :: 功能相当于 fsutil file createnew 文件名 字节数(fsutil 需要管理员权限)
- :: 算法:二分法
- :: 外部命令依赖: findstr(调用1次;用于生成ASCII 码0x00的字符)
- :createnew <filename> <num> //by plp626
- setlocal EnableDelayedExpansion
- cmd/u/cecho.>0.tmp
- findstr/vrc:$ 0.tmp>1.tmp
- Set/a a=%2&if !a! leq 0 set/p=<nul>"%~2"&exit/b
- Set t1=+1.tmp&Set t0=&Set s=
- for /l %%a in (1 1 30)do if !a! GEQ 2 (
- set/at=a%%2,a/=2&Set "s=" "$+$ $2" "$2^!t!t!^! $!s!"
- )
- for %%a in ("1.tmp $.tmp!s:$=$.tmp!")do copy/b %%~a>nul
- if exist "%~1" del/a "%~1"
- ren $.tmp "%~1"
- del 0.tmp 1.tmp $.tmp $.tmp2
- 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 |