我有一个非常简单的批处理文件,它将目录中的所有 txt 文件复制到另一个位置。我想进行检查,如果目录中的文件大小总和超过 1mb,则复制将继续,否则退出。
我可以做的另一件事是单独检查每个文件,但所有文件的总和将是一个应该可行的粗略且现成的解决方案。
任何指示都会很棒,因为我不知道从哪里开始。
rem @echo off
cd /d "c:\test"
for /f "tokens=3" %%a in ('dir /-c /-p ^|find "File(s)" ') do
if %%a GTR 1024 (
echo %%a is more than enough
) else (
echo %%a is less than 1024
)
pause
最佳答案
这将为您提供文件夹的总大小。
@echo off
cd /d "d:\target\folder"
for /f "tokens=3" %%a in ('dir /-c /-p ^|find "File(s)" ') do echo %%a
pause
如果您打开 cmd 提示符并输入 dir
,您将获得文件列表。
查看下面几行,您将看到一行包含“File(s)”,该数字就是上面代码提取的数字。
这可以通过删除逗号来改进数字比较,但请注意,它最多只能处理 2 GB。
@echo off
cd /d "c:\some\dir"
for /f "tokens=3" %%a in ('dir /-c /-p ^|find "File(s)" ') do if %%a GTR 1024 echo output & pause
这是一个 else 子句:
@echo off
cd /d "c:\some\dir"
for /f "tokens=3" %%a in ('dir /-c /-p ^|find "File(s)" ') do (
if %%a GTR 1024 (
echo %%a is more than enough
) else (
echo %%a is less than 1025
)
)
pause
关于batch-file - 如果目录中的文件总数超过一定限制则运行命令(Batch/cmd),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19541174/