找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 19686|回复: 3

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

[复制链接]
发表于 2011-6-25 22:35:27 | 显示全部楼层 |阅读模式
本帖最后由 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技术 +1 收起 理由
zm900612 + 1 不错

查看全部评分

发表于 2011-6-25 23:31:45 | 显示全部楼层
fsutil命令可以吗?
发表于 2011-6-26 01:26:57 | 显示全部楼层
如果只是生成个空白的话,fsutil file createnew file.txt 900效果更好一些
发表于 2011-6-26 01:57:23 | 显示全部楼层
楼上。。。。

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


看来看客就只是看了标题,没看楼主的代码!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 01:30 , Processed in 0.018878 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表