我有一个在批处理文件看起来像这样的循环:
for %%y in (100 200 300 400 500) do (
set /a x = y/25
echo %x%
)
该行:
set /a x = y/25
似乎没有做任何分裂。 什么是25除以每个Y正确的语法? 我只需要从这种划分的整数结果。
我有一个在批处理文件看起来像这样的循环:
for %%y in (100 200 300 400 500) do (
set /a x = y/25
echo %x%
)
该行:
set /a x = y/25
似乎没有做任何分裂。 什么是25除以每个Y正确的语法? 我只需要从这种划分的整数结果。
环境变量,无需扩大在SET / A语句中使用。 但对于变量必须扩大。
此外,即使你的工作计算,回声会因为百分号展开时的声明被解析,并为构建整个一次解析失败。 所以%x%的值将是值执行循环之前它的存在。 要获得设置你应该使用延迟扩展循环内的值。
此外,您应该删除赋值运算符前的空格。 您声明在名称中有空格的变量。
@echo off
setlocal enableDelayedExpansion
for %%A in (100 200 300 400 500) do (
set n=%%A
REM a FOR variable must be expanded
set /a x=%%A/25
REM an environment variable need not be expanded
set /a y=n/25
REM variables that were set within a block must be expanded using delayed expansion
echo x=!x!, y=!y!
REM another technique is to use CALL with doubled percents, but it is slower and less reliable
call echo x=%%x%%, y=%%y%%
)
它没有做任何事情,因为“Y”仅仅是一个字母。 您需要百分号引用变量。
set /a x = %%y/25