首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows批处理文件嵌套的For循环

Windows批处理文件嵌套的For循环
EN

Stack Overflow用户
提问于 2020-11-06 13:35:25
回答 2查看 63关注 0票数 0

这个人有中年危机。我有一个txt文件,其中包含文件和文件大小的列表,我正在遍历该文件,并将其与磁盘上实际找到的文件进行比较。文件列表是另一台服务器上的远程文件。

数据:

代码语言:javascript
复制
\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

代码:

代码语言:javascript
复制
@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在批处理文件中没有正确的作用域有关。

代码语言:javascript
复制
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:

任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 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 /?

票数 1
EN

Stack Overflow用户

发布于 2020-11-06 15:18:55

工作代码:

代码语言:javascript
复制
@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

输出:

代码语言:javascript
复制
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 . . .
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64709379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档