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

[系统相关] 【已解决】批处理获取D盘可用空间后再随机生成特定容量的文件

本帖最后由 304802301 于 2025-2-10 11:46 编辑

我想实现这个功能:
1、获取D盘的可用容量。(比如本次获取的是230G,每次获取到的这个可用容量肯定都是不一样的值)
2、用这个值去减去30G(这个30G是我可以自己定义的固定值)
3、用可用容量230G减去固定值30G=200G,就去随机生成一个文件,容量是200G。
4、生成特定大小的文件的代码可以用这个【第三行代码是以字节形式的,上面2个值也全部统一成字节,做到整体都统一。或者整体统一成G,也行的】
@echo off
setlocal enabledelayedexpansion
fsutil file createnew test.txt 204800000000

5、上述流程1分钟执行一次【这个我自己会设置,在win的“任务计划程序”中可以实现】
6、我的目的是每分钟D盘的可用容量都是我想要的固定值(或接近固定值)
感谢各位!

回复 6# Five66


    可以使用,感谢感谢

TOP

回复 5# 304802301


    啊 , 打错字了 ,将3楼代码第7行那个
setlenght
改成
setlength

TOP

回复 3# Five66


    您好,执行后提示这个:
方法调用失败,因为 [System.IO.FileStream] 不包含名为“setlenght”的方法。
所在位置 行:7 字符: 1
+ $file.setlenght($free-$size)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: ( [],RuntimeException
    + FullyQualifiedErrorId : MethodNotFound

请按任意键继续. . .

TOP

回复 2# aloha20200628


    可以使用,感谢!

TOP

  1. @{}#? 2>nul&powershell -c "gc -literalpath '%~f0'|out-string|iex"&exit/b
  2. $free=(Get-PSDrive d).free
  3. $size=30gb
  4. if($free -gt $size){
  5. $file=[io.file]::openwrite('d:\text.txt')
  6. $file.setlenght($free-$size)
  7. $file.close()
  8. }
  9. cmd /c pause
复制代码

TOP

本帖最后由 aloha20200628 于 2025-2-10 11:22 编辑

回复 1# 304802301

以下代码中变量 v 是自定义的固定减量,假设为 30GB 的字节值
仅当D盘剩余空间大于固定减量时才生成空字节文件...
  1. @echo off &setlocal &set "v=32212254720" &md "d:\test" 2>nul
  2. for /f "tokens=2 delims= " %%a in ('wmic volume get Caption^,freespace^|find /i "D:\" ') do (
  3.     for /f %%v in ('powershell "if(%%a -gt %v%){[Math]::Round(%%a-%v%)}else{0}" ') do if "%%v" neq "0" fsutil file createnew "d:\test\test.txt" %%v)
  4. pause&exit/b
复制代码

TOP

返回列表