Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 获得“的自由空间”;C:“;使用批处理文件的驱动器_Batch File - Fatal编程技术网

Batch file 获得“的自由空间”;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

我想编写一个批处理文件,该文件将为我提供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 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)*