console
@echo off
REM 请求管理员权限
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
setlocal enabledelayedexpansion
:: 用户输入目标盘符
:inputDrive
set /p "driveLetter=请输入目标盘符(例如 C、D 等): "
if not defined driveLetter goto inputDrive
set "driveLetter=%driveLetter:~0,1%"
:: 验证盘符有效性
if not exist "%driveLetter%:\" (
echo 错误: 盘符 %driveLetter% 不存在或无法访问
goto inputDrive
)
:: 设置目标文件夹路径
set "targetDir=%driveLetter%:\FillerFiles"
:: 设置基础文件名
set "baseName=fill"
:: 文件无扩展名
set "fileExt="
:: 设置每次创建的文件大小(单位:字节)
set "fileSize=1048576" :: 默认1MB
:: 创建目标目录(如果不存在)
if not exist "%targetDir%" (
mkdir "%targetDir%"
if errorlevel 1 (
echo 无法创建目录 %targetDir%
pause
exit /b 1
)
)
:: 计数器
set /a counter=1
:createFile
:: 生成文件名
set "fileName=%baseName%_!random!_!counter!!fileExt%"
set /a counter+=1
:: 创建文件
fsutil file createnew "%targetDir%\%fileName%" %fileSize% >nul
:: 检查磁盘空间
for /f "tokens=3" %%a in ('dir /-c "%targetDir%" ^| find "可用字节"') do (
set "freeSpace=%%a"
)
:: 移除逗号(如果有)
set "freeSpace=!freeSpace:,=!"
:: 如果剩余空间小于文件大小的两倍,则停止
if !freeSpace! LSS !fileSize! (
echo 磁盘空间不足,停止创建文件。
echo 共创建了 !counter! 个文件于 %targetDir%
goto end
)
goto createFile
:end
echo 操作完成。所有文件已保存到: %targetDir%
pause