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

[文件操作] 创建0占用大文件.BAT

[复制链接]
发表于 2026-5-25 14:40:44 | 显示全部楼层 |阅读模式
QQ拼音截图20260525142716.png
QQ拼音截图20260525142816.png

------------------代码-------

  1. @echo off
  2. title 创建0占用大文件
  3. Powershell -c "$b=Read-Host '请输入文件名';do{$a=Read-Host '请输入文件大小(G)'}while($a -notmatch '^\d+$');$c=[int]$a*1073741824;Fsutil file createNew $b $c;Fsutil sparse setFlag $b;Fsutil sparse setrange $b 0 $c"
  4. pause
复制代码


-----代码存 ANSI 编码,XXXX.BAT

脚本没啥实用意义,一种电脑命令的使用技巧而已,,,,
发表于 2026-5-29 09:33:51 | 显示全部楼层
如果输入大小超过实际容量,系统会不会爆掉呢?
 楼主| 发表于 2026-5-30 16:22:12 来自手机 | 显示全部楼层
宁处理 发表于 2026-5-29 09:33
如果输入大小超过实际容量,系统会不会爆掉呢?

不会,超出现有剩余可使用空间容量,会提示:创建失败,,,!

这类脚本应用还是有点实用空间的,例如:测试磁盘复制速率,和局域网传输速率,,,,,
会很直观的看到传输速率,但又不占用磁盘空间!
,,
又如,测试压缩占比,网盘上传速率,下载速率,,,等,有很多偏门的玩法,但那些玩法又很另类,,!属于比较偏专业的玩法,,,,
发表于 2026-6-1 16:12:03 | 显示全部楼层
稀疏文件……,之前我用于创建空文件,然后复制到需要处理的磁盘(较简单较快速的覆盖空间,防止数据被恢复)
发表于 2026-6-5 10:13:56 | 显示全部楼层
hnfeng 发表于 2026-6-1 16:12
稀疏文件……,之前我用于创建空文件,然后复制到需要处理的磁盘(较简单较快速的覆盖空间,防止数据被恢复 ...

代码有分享到论坛吗,没有搜索到
发表于 2026-6-5 22:44:10 | 显示全部楼层
freesoft00 发表于 2026-6-5 10:13
代码有分享到论坛吗,没有搜索到

用稀疏文件的方法防止非空文件被恢复的示例代码如下,存为 test.bat 运行,结果会将当前目录中的全部文件变为与源文件等长度的稀疏文件,即每个稀疏文件的文件尺寸虽保持与源文件相同,但占用磁盘空间为零,且一旦被删除后,再恢复的内容也会被清空...

test.bat
  1. @echo off &for %%F in (*) do (
  2.    fsutil sparse setflag "%%F"
  3.    fsutil sparse setrange "%%F" 0 %%~zF )
  4. pause&exit/b
复制代码
发表于 2026-6-7 10:58:16 | 显示全部楼层
aloha20200628 发表于 2026-6-5 22:44
用稀疏文件的方法防止非空文件被恢复的示例代码如下,存为 test.bat 运行,结果会将当前目录中的全部文件 ...

还能这样?会不会只是在磁盘做了标记,实际扇区的内容并没有被覆盖清空?我找时间试试。如果这样可以防止恢复,确实是最高效的方法
发表于 6 天前 | 显示全部楼层
aloha20200628 发表于 2026-6-5 22:44
用稀疏文件的方法防止非空文件被恢复的示例代码如下,存为 test.bat 运行,结果会将当前目录中的全部文件 ...

经试验,不建议使用这种方法,只是表象

因为实际磁盘上的数据并没有被实际覆盖掉,防不了数据恢复工具或磁盘编辑工具
发表于 6 天前 | 显示全部楼层
hnfeng 发表于 2026-6-9 08:11
经试验,不建议使用这种方法,只是表象

因为实际磁盘上的数据并没有被实际覆盖掉,防不了数据恢复工具或 ...

    6楼代码的结果确实仅限于从回收站捞出来的已是一个被做空的文件。
    凡事都是如此,老天开了一扇门却又关了一扇窗 没有两全其美。
    fsutil 能对超大稀疏文件的处理如此高效,只是因其在 '逻辑层面' 操作,并未从物理上(磁盘扇区位置)真正改变源文件的非空内容,否则其处理文件的速度会慢很多。
    以前为求 '真实涂抹文件' 的高速度,一般会用c代码覆写整个文件,现在用 powershell 的.net方法实现,其速度也还可以。

    test.bat
  1. @echo off &powershell -nop -c "dir -file *|%%{$z=$_.length;$b=[linq.enumerable]::repeat([byte]0x01,$z) -as [byte[]];[io.File]::writeAllbytes($_,$b)}" &exit/b
复制代码

发表于 6 天前 | 显示全部楼层
本帖最后由 hnfeng 于 2026-6-9 19:22 编辑
aloha20200628 发表于 2026-6-9 18:23
6楼代码的结果确实仅限于从回收站捞出来的已是一个被做空的文件。
    凡事都是如此,老天开了一扇门 ...


谢谢分享
我找时间测测速度
发表于 5 天前 | 显示全部楼层
hnfeng 发表于 2026-6-9 19:11
谢谢分享
我找时间测测速度

还有一个更简单的方法,是直接调用 fsutil file setzerodata 方法物理性覆写目标文件(被处理文件须为普通文件,不应是稀疏文件),而且可处理不超过 4GB 体量的单个文件。

  1. @echo off & for %%F in (*) do ( fsutil file setzerodata offset=0 length=%%~zF "%%F" )
  2. exit/b
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-15 03:48

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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