Batch file 获得“的自由空间”;C:“;使用批处理文件的驱动器
我想编写一个批处理文件,该文件将为我提供C驱动器中剩余的可用空间。以下脚本将为您提供驱动器上的可用字节:Batch file 获得“的自由空间”;C:“;使用批处理文件的驱动器,batch-file,Batch File,我想编写一个批处理文件,该文件将为我提供C驱动器中剩余的可用空间。以下脚本将为您提供驱动器上的可用字节: @setlocal enableextensions enabledelayedexpansion @echo off for /f "tokens=3" %%a in ('dir c:\') do ( set bytesfree=%%a ) set bytesfree=%bytesfree:,=% echo %bytesfree% endlocal && set b
@setlocal enableextensions enabledelayedexpansion
@echo off
for /f "tokens=3" %%a in ('dir c:\') do (
set bytesfree=%%a
)
set bytesfree=%bytesfree:,=%
echo %bytesfree%
endlocal && set bytesfree=%bytesfree%
请注意,这取决于dir
命令的输出,该命令需要最后一行包含格式24 dir(s)34071691264 bytes free
的可用空间。具体而言:
- 它必须是最后一行(或者您可以修改
循环以显式检测该行,而不是依赖于为每行设置for
)bytesfree
- 可用空间必须是第三个“字”(或者您可以更改
位以获得不同的字)tokens=
- 数千个分隔符是
字符(或者您可以将逗号替换为其他字符),
它不会污染您的环境名称空间,只在退出时设置
bytesfree
变量。如果您的dir
输出不同(例如,不同的区域设置或语言设置),则需要调整脚本。以下脚本将为您提供驱动器上的可用字节:
@setlocal enableextensions enabledelayedexpansion
@echo off
for /f "tokens=3" %%a in ('dir c:\') do (
set bytesfree=%%a
)
set bytesfree=%bytesfree:,=%
echo %bytesfree%
endlocal && set bytesfree=%bytesfree%
请注意,这取决于dir
命令的输出,该命令需要最后一行包含格式24 dir(s)34071691264 bytes free
的可用空间。具体而言:
- 它必须是最后一行(或者您可以修改
循环以显式检测该行,而不是依赖于为每行设置for
)bytesfree
- 可用空间必须是第三个“字”(或者您可以更改
位以获得不同的字)tokens=
- 数千个分隔符是
字符(或者您可以将逗号替换为其他字符),
它不会污染您的环境名称空间,只在退出时设置
bytesfree
变量。如果您的dir
输出不同(例如,不同的区域设置或语言设置),则需要调整脚本。我必须使用此脚本的输出并构建If
表达式,以确定是否必须从驱动器中删除旧文件。我使用了:ECHO%bytesfree%>x&FOR%%?在(x)DO SET/A strlen=%%~z?-2&del x*newline*IF%strlen%LEQ 13[…]
我必须使用此脚本的输出并构建一个IF
表达式来确定是否必须从驱动器中删除旧文件。我使用了:ECHO%bytesfree%>x&FOR%%?在(x)DO SET/A strlen=%%~z?-如果%strlen%LEQ 13[…],则删除x*换行符(&D)*