我有一个非常简单的批处理文件,它将目录中的所有txt文件xcopys到另一个位置。我想检查一下,如果目录中的文件大小总和超过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
答案 0 :(得分:2)
这应该为您提供文件夹的总大小。
@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
,则会获得文件列表
查看下面的几行,你会看到一行中包含“文件”,这个数字就是上面提到的代码。
这通过删除逗号来改进数字比较,但要注意它最多只能工作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
答案 1 :(得分:1)
cd some_dir
@for /f "tokens=3 delims=)b " %s in ('dir /s ^| find /i "File("') do @set size=%s
@set /a size=%size:,=%
set curr_dir=%cd%
cd ..
@if %size% GTR [LIMIT] xcopy "%curr_dir%" "[c:\destination]" /y /s /i /c /h