由于循环中的其他变量和数字而设置变量时出错

问题描述 投票:0回答:1

在下面的脚本中,我计算文件类型,然后对所有这些文件执行 ffmpeg,我尝试回显某种进度,但在设置时

@echo on & setlocal

set count=0
set pattern=*.mp4
set pattern0=*.webm
for /f %%i in ('dir /b /a-d %pattern% ^| find /c /v ""') do @call set count=%%i
for /f %%i in ('dir /b /a-d %pattern0% ^| find /c /v ""') do @call set count0=%%i
set sum=%count% + %count0%
set total=%sum%
FOR /r %%i in (*.mp4,*.webm) DO (
set /A pprog=((100-%sum%)*100) / (%count%+%count0%)

set /A sum=%sum% - 1
echo %pprog% done %sum% files left out of %total%
)

pause


我收到此错误:

*100 is unexpected at this time.

set /A pprog=((100-%sum%)*100) / (%count%+%count0%)
的结果应该是一个正常数,整个输出是这样的:

E:\Desktop\New folder>test2.bat
E:\Desktop\New folder>set count=0
E:\Desktop\New folder>set pattern=*.mp4
E:\Desktop\New folder>set pattern0=*.webm
E:\Desktop\New folder>for /F %i in ('dir /b /a-d *.mp4 | find /c /v ""') do @call set count=%i
File Not Found
E:\Desktop\New folder>for /F %i in ('dir /b /a-d *.webm | find /c /v ""') do @call set count0=%i
E:\Desktop\New folder>set sum=0 + 10
E:\Desktop\New folder>set total=0 + 10
*100) was unexpected at this time.
E:\Desktop\New folder>set /A pprog=((100-0 + 10)*100) / (0+10)
E:\Desktop\New folder>

找不到文件不是问题。如果您想进行实验,请使用此处的数字。

编辑以删除

rem
行并重新运行脚本并更新输出。

windows batch-file cmd
1个回答
0
投票

正如评论中提到的,您的代码存在一些问题(语法和逻辑方面)。这是修改后的版本:

@echo off & setlocal enabledelayedexpansion
set "count=0"
set "pattern=*.mp4"
set "pattern0=*.webm"
for /f %%i in ('dir /b/s  /a-d "%pattern%" "%pattern0%" ^| find /c /v ""') do set "total=%%i"
set "counter=0"
FOR /r %%i in ("%pattern%","%pattern0%") DO (
  set /A count+=1
  set /A pprog=count*100/total
  echo !pprog!%% - !count! files of %total% done. (%%i)
)
© www.soinside.com 2019 - 2024. All rights reserved.