获取上传到保管箱的文件的大小

Get size of a file that is uploaded on dropbox

我想获取上传到 dropbox 的文件的大小。 我试过这个:

@ECHO OFF
color A
for %%A in (https://www.dropbox.com/s/e9q3ssvhitsatbq/Update.zip) do set Size=%%~zA
echo %Size%
pause

但是没用。 输出必须以字节为单位。 所以我希望批处理文件输出(例如)1024 B 有没有办法获取上传到 dropbox 的文件的大小? 有人吗?

在 Windows 批次中是不可能的。使用 wget...

的 win32 版本
wget -S --spider --no-check-certificate https://www.dropbox.com/s/e9q3ssvhitsatbq/Update.zip

...或curl...

curl -I https://www.dropbox.com/s/e9q3ssvhitsatbq/Update.zip

...并解析输出。请注意,这两个命令都执行 HEAD 请求,即它们在服务器上查找文件而不实际下载它。

可能有一种方法可以在 powershell 中执行此操作,但这超出了我的知识范围。

更新1:如何将大小保存到变量?

@ECHO OFF
SET URL=https://www.dropbox.com/s/e9q3ssvhitsatbq/Update.zip
FOR /F "usebackq tokens=*" %%A IN (`wget -S --spider --no-check-certificate %URL% 2^>^&1 ^| FINDSTR "Content-Length: "`) DO (
    SET SIZE=%%A
)
ECHO %SIZE:~16%

输出:

142515188

更新 2:有没有办法让它更快?

我不这么认为。我这边大约需要 10 秒钟。如果我在浏览器中打开 URL,我还需要大约 10 秒才能到达实际的下载页面。 Dropbox 似乎有点慢。

旁注,打开 URL 会导致 302 重定向,因此实际上会发送 两个请求 ,这解释了 10 个中的一半秒。

您必须使用 DROPBOX API 和 POST/GET 方法。 您可以使用 VBS 来完成。