首页 > 解决方案 > 比较批处理文件中相同文件的大小

问题描述

我有 1 个任务,其中有 1 个文件开始通过 DB 生成并花费了将近 1 个小时来生成,有 1 个批处理文件在可用时检查该文件,它调用一个新的批处理文件并触发“文件发送”,问题是连续生成的这个文件没有在文件中完全生成,并且选择了相同的文件并调用批处理文件

我想要做的是建立一个逻辑,我可以将循环内的文件大小与 2 个变量 sizeA 和 sizeB 进行比较,并在 sizeA==sizeB 时调用另一个批处理文件现在唯一的问题是我不确定如何构建这个代码中的逻辑。\

这是我尝试过的:

@echo off
setlocal EnableDelayedExpansion
set file = "C:\Users\rb54761\Desktop\New folder\File.txt"
set "size=0"
pause
:loop for /f "tokens=*" %%x in ('dir /s /a /b "%file%"2^>nul') do set /a size=%%~zx
echo !size!
PAUSE
if !size! == !size! goto call
goto loop 
:call echo Success

标签: batch-file

解决方案


编辑我现在只看到你的评论是一个 2gb 的文件,那么下面的代码将不起作用。

如果文件更小..这里是一个例子:

@echo off
set "myfile=C:\Users\rb54761\Desktop\New folder\File.txt"
:start
for /f %%I in ("%myfile%") do set size=%%~zI
if %size% LSS 100 (echo file not ready %size% & timeout /t 10 & goto :start)
echo copy file.

如上所述,它将检查文件的大小为 100kb,如果还没有,它将超时 10 秒并转到开头并再次测试,直到文件达到 100kb,它将不再满足 if 语句和通过那条线并简单地 echo copy file

请注意,我的 set 命令中没有空格。我建议您从 cmd 运行帮助for /?以获取有关此命令的更多信息。


推荐阅读