【发布时间】:2021-10-06 14:54:14
【问题描述】:
我会在两个文件夹之间做大小差异。
这是我的批处理代码
@echo off
setlocal ENABLEDELAYEDEXPANSION
set firstline=.
set firstline2=.
set secondline=.
set secondline2=.
::GET SIZE FIRST FOLDER
@FOR /F "tokens=1 delims=^^" %%G IN ('dir /a /s "C:\Program files\"') DO (
set firstline=!secondline!
set secondline=%%G
)
::GET SIZE SECOND FOLDER
@FOR /F "tokens=1 delims=^^" %%G IN ('dir /a /s "C:\Temp\"') DO (
set firstline2=!secondline2!
set secondline2=%%G
)
echo !firstline! ----> 8528 File(s) 3,767,627,449 bytes
echo !firstline2! ----> 16 File(s) 37,620,834 bytes
::DO BYTES DIFFERENCE
set difference = !firstline! - !firstline2!
我怎样才能在“firstline”和“firstline2”上只获取字节值,这样我才能有所作为?
谢谢
【问题讨论】:
-
Mmmm... 你需要得到这样一个字符串的适当部分,可能用
for /F命令和tokens=3开关,然后用%var:,=%替换消除逗号。但是,如果您想对大于 2147483647 的数字进行差分(即set /A命令可以管理的最大数字),那么您需要一种方法来管理批处理文件中的大数字,例如 this one -
对不起,我是批处理语言的新手,请您建议我如何只取字节值,解释部分代码?对于大数字的差异,这不是问题,因为我可以将字节转换为兆字节 (n/1024) 或千兆字节 (n/1024/1024)
-
我已经给了你一系列的提示,所以请阅读
for /F命令和“变量替换”的文档,写一个批处理文件,如果你有问题返回这里。您打算如何将 3767627449 字节转换为兆字节?使用set /A命令?
标签: batch-file