这个人有中年危机。我有一个txt文件,其中包含文件和文件大小的列表,我正在遍历该文件,并将其与磁盘上实际找到的文件进行比较。文件列表是另一台服务器上的远程文件。
数据:
\videos\20201103-0_FastestLap2017WorldTimeAttackMCAS13Silvia1.20.9.mp4|72184632
\videos\20201103-0_WTAC2015SteveKasWTACR34GTRSkylinePreWTACTestingatSydneyMotorsportPark.mp4|402572676
\videos\20201103-0_WTAC2016MCASuspensionHammerheadS13TimSlade1.22.19.mp4|353526548
\images\20201103-0_FeatDOP_4283.jpg|421791
\images\20201103-0_battles4.jpg|835931
\images\20201103-0_3N8A3099copy.jpg|1696647
\videos\20201103-0_ATTACKbestonboardlapsofWTAC2018RP968HammerheadXtremeGTR.TRB03andmore.mp4|406519905代码:
@ECHO OFF
SET TestDir=S:\Documents\testplatform\data\
@ECHO Checking %TestDir%
SETLOCAL EnableDelayedExpansion
SET ActualSize=0
for /F "tokens=1,2 delims=|" %%i in (%TestDir%\files.txt) do (
for %%A in (%TestDir%%%i) do (
set ActualSize=%%~zA
)
@ECHO File: %%i, Server Size: %%j, ActualSize: !ActualSize!
)
PAUSE
SETLOCAL DisableDelayedExpansion问题是,无论我如何尝试使用%%或!!,我都无法让ActualSize显示实际大小。我知道这与设置ActualSize=%%~zA在批处理文件中没有正确的作用域有关。
Checking S:\Documents\testplatform\data\
File: \videos\20201103-0_FastestLap2017WorldTimeAttackMCAS13Silvia1.20.9.mp4, Server Size: 72184632, ActualSize:
File: \videos\20201103-0_WTAC2015SteveKasWTACR34GTRSkylinePreWTACTestingatSydneyMotorsportPark.mp4, Server Size: 402572676, ActualSize:
File: \videos\20201103-0_WTAC2016MCASuspensionHammerheadS13TimSlade1.22.19.mp4, Server Size: 353526548, ActualSize:
File: \images\20201103-0_FeatDOP_4283.jpg, Server Size: 421791, ActualSize:
File: \images\20201103-0_battles4.jpg, Server Size: 835931, ActualSize:
File: \images\20201103-0_3N8A3099copy.jpg, Server Size: 1696647, ActualSize:
File: \videos\20201103-0_ATTACKbestonboardlapsofWTAC2018RP968HammerheadXtremeGTR.TRB03andmore.mp4, Server Size: 406519905, ActualSize:任何帮助都将不胜感激。
发布于 2020-11-06 13:55:23
:: get the filesize of each file and save it in ActualSize是非法语句。删除它或将其转换为注释备注(也称为)- REM get the filesize of each file and save it in ActualSize。
你正在张贴你发现的非法代码,并询问为什么非法代码不起作用。,因为它是非法的。
:是一个Goto目标,在Windows命令行界面中称为label。
键入rem /?和goto /?。
发布于 2020-11-06 15:18:55
工作代码:
@ECHO OFF
SET TestDir=S:\Documents\testplatform\data\
SET MaxDifference=256
@ECHO Checking %TestDir%
SETLOCAL EnableDelayedExpansion
SET ActualSize=0
:: loop over the test data file
for /F "tokens=1,2 delims=|" %%i in (%TestDir%\files.txt) do (
:: get the filesize of each file and save it in ActualSize
for %%A in (%TestDir%%%i) do (
SET /A ActualSize=0
SET /A ActualSize=%%~zA
)
SET /A Difference=!ActualSize!-%%j
IF !Difference! LSS 0 SET /A Difference=!Difference!*-1
IF !Difference! GTR !MaxDifference! (
@ECHO File: %%i, Server Size: %%j, ActualSize: !ActualSize!, Difference: !Difference!
)
)
SETLOCAL DisableDelayedExpansion
PAUSE输出:
Checking S:\Documents\testplatform\data\
File: /playlist-1.html, Server Size: 6360, ActualSize: 6581, Difference: 221
File: /playlist-2.html, Server Size: 6340, ActualSize: 6561, Difference: 221
File: /playlist-3.html, Server Size: 6396, ActualSize: 6617, Difference: 221
File: /playlist-6.html, Server Size: 6385, ActualSize: 6606, Difference: 221
Press any key to continue . . .https://stackoverflow.com/questions/64709379
复制相似问题