batch-file - 如果目录中的文件总数超过一定限制则运行命令(Batch/cmd)

标签 batch-file cmd

我有一个非常简单的批处理文件,它将目录中的所有 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/

相关文章:

windows - 合并大量文件,仅包括部分文件名

powershell - 在PowerShell中的路径变量中执行exe文件

c - 在 C 中读取命令行参数

windows - 在 SFTP 批处理文件中包含密码

batch-file - 找到第一个命中后停止 DIR 命令搜索

batch-file - 命令提示符错误 'C:\Program'未被识别为内部或外部命令、可操作程序或批处理文件

ruby - RubyGems 创建的 gem 批处理文件是错误的还是我遗漏了什么?

c# - 如何从SSIS调用cmd.exe并在命令行执行命令

android - adb 不被识别为内部或外部命令、可运行程序或批处理文件

windows - 批处理脚本 : issue with colored echo when chaining commands