gpt4 book ai didi

batch-file - 如何在 Batch 中划分可能很大的数字?

转载 作者:行者123 更新时间:2023-12-03 09:32:33 24 4
gpt4 key购买 nike

我的问题涉及我正在编写的脚本,该脚本使用批处理文件自动备份多个文件夹和子文件夹。
现在我正在尝试以可读格式实现某种进度指示器,最好是百分比。
首先,它使用以下命令读取要复制的总大小:

FOR /R "C:\Users\XXX" %%F IN (*.*) DO (
set /a overall=!overall!+%%~zF
)

对于我的测试批处理中的特定文件夹,这将返回 266,173,879 字节的大小。
但是,如果我尝试在 for 循环之后将这个数字除以 1024(千字节)

set /a overall=%overall%/1024

Batch 返回类似“/1024 cannot be used here syntactically”的内容(您可能知道正确的翻译,我的翻译是德语)。
我尝试添加/删除括号和空格,但我不断收到相同的错误。

是不是我的语法有问题,我被蒙着眼睛没看到?
如果不是,您如何调用 C++ .exe 传递 %overall% 的值以分配给 C++ 变量?(C++ 是我对基础知识了解最少的唯一其他编程语言,PowerShell 不是一个选项,它必须是常规的 Windows Batch)

完整的相关代码:

FOR /R "C:\Users\XXX" %%F IN (*.*) DO (
set /a overall=!overall!+%%~zF
)

set /a overall=%overall%/1024

FOR /R "C:\Users\XXX" %%F IN (*.*) DO (
xcopy "%%F" "E:%%~pF" %parameter%>nul
cls
echo Copying... Progress: !size! of !overall! KB copied.
)

最佳答案

这里有一些关于批处理文件及其数学限制的有用信息。该页面还包含一些有关如何最好地处理这些限制的信息。

There is a severe limitation in batch math: it can only handle 32-bit integers. http://www.robvanderwoude.com/battech_math.php

未签名为 4,294,967,295,已签名为 -2,147,483,6482,147,483,647


为简单起见,您可能只想研究使用 robocopy 如果您使用的是 Windows 2003/XP 或更新版本。请注意,您必须安装 Windows Resource Pack (适用于 XP)添加 robocopy 工具。有关所有功能和日志记录选项,请参阅 robocopy 链接。

关于batch-file - 如何在 Batch 中划分可能很大的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14123466/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com