我的问题与我正在编写的脚本有关,该脚本用于使用批处理文件自动备份多个文件夹和子文件夹。
现在我正在尝试以可读格式实现某种进度指示器,最好是百分比。
首先,它使用以下命令读取要复制的总大小:
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 不能在语法上在这里使用”(您可能知道正确的翻译,我的是德语)。
我尝试添加/删除括号和空格,但我不断收到相同的错误。
我的语法有什么问题,我蒙着眼睛看不到吗?
如果不是,您如何调用 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.
)