Windows 从文本文件中读入值并输出某些值

Windows 从文本文件中读入值并输出某些值,windows,shell,batch-file,scripting,Windows,Shell,Batch File,Scripting,我正在制定一些自定义备份脚本,我想做的最后一点让我感到困惑 搜索了所有的帖子,并没有找到我想要做的事情的解决方案 我需要从一个文本文件中读取值,这个文本文件是这个命令的结果,该命令创建activebackup目录中每个ZIP文件的列表及其大小 forfiles /p f:\activebackup /s /m *ZIP /c "cmd /c echo @fname @fsize" > c:\scripts\output\filesize.txt 输出几乎是: server_name1-d

我正在制定一些自定义备份脚本,我想做的最后一点让我感到困惑

搜索了所有的帖子,并没有找到我想要做的事情的解决方案

我需要从一个文本文件中读取值,这个文本文件是这个命令的结果,该命令创建activebackup目录中每个ZIP文件的列表及其大小

forfiles /p f:\activebackup /s /m *ZIP /c "cmd /c echo @fname @fsize" > c:\scripts\output\filesize.txt
输出几乎是:

server_name1-date.zip 23454623 
server_name2-date.zip 7862457 
server_name3-date.zip 22 
server_name4-date.zip 98 
etc 
我需要读入所有条目(For loop?),只输出大小为100或更小的行。然后可以将输出用作变量,这样变量(基于上面的日期)将是server_name3-date.zip 22,server_name4-date.zip 98

这样,我可以在生成现有电子邮件的作业中使用该变量,并添加一行,如:

echo The following ZIPs are too small: %value_too_small%

感谢您提前提供指导和示例

对此进行测试。批处理数学在2gb大小上失败,但它可能适用于较小的大小

forfiles /p f:\activebackup /s /m *ZIP /c "cmd /c if @fsize LEQ 100 echo @fname @fsize" > c:\scripts\output\filesize.txt

可以使用FORFILES,但速度非常慢。使用带有/R选项的简单FOR循环要快得多。
~z
修饰符提供文件大小

@echo off
setlocal enableDelayedExpansion
set "tooSmall="
for /r "f:\activebackup" %%F in (*.zip) do if %%~zF leq 100 set "tooSmall=!tooSmall!"%%~fF", "
set "tooSmall=!tooSmall:~0,-2!"
如果文件路径包含
,上述代码将失败因为扩展FOR循环时启用了延迟扩展。如有必要,还有一些变通办法


另外,请记住,环境变量的长度限制为~8191字节。如果您可能有许多文件超出了最大长度,那么您必须想出一种方法,一次编写一个文件。

+1,大文件大小可以正常工作,因为在If比较中,大于2147483647的数字被视为等于2147483647,当然大于100。看见