如何在FOR / L中使用EnableDelayedExpansion?

时间:2017-10-20 13:17:17

标签: batch-file

我不断收到错误操作员错误。我想我正在使用“!”完全错了,但我不知道在哪里使用它。

ECHO ON

SETLOCAL EnableDelayedExpansion

SET CSV_Name=
SET /P CSV_Name=Please enter the CSV Name.

ECHO Zahl;Quadrat;Kubik >> C:\Users\Jeff\Desktop\%CSV_Name%.csv

SET Square=0
SET Cubic=0
FOR /L  %%A IN (2, 2, 100) DO (
 SET /A !Square! = %%A * %%A
 SET /A !Cubic! = %%A * %%A * %%A
 ECHO %%A
 ECHO !Square!
 ECHO %%A;!Square!;!Cubic! >> C:\Users\Jeff\Desktop\%CSV_Name%.csv
 )

有人可以解释我做错了吗?

2 个答案:

答案 0 :(得分:1)

尝试

 SET /A Square = %%A * %%A
 SET /A Cubic = %%A * %%A * %%A

在为变量设置新值时,您不需要!%

答案 1 :(得分:1)

SET /A !Square! = %%A * %%A

将尝试设置名为的变量(square内容

SET /A Square = %%A * %%A

将设置square

!var!将检索变量var当前内容(即由于循环操作而发生变化),而%var%将检索变量的初始值 - 当检查语句的有效性时("已解析")。在循环之外,!var! = %var%但是使用%var%并保留!var!以获取可能的值的传统智慧在code block(带括号的序列行)的操作期间进行更改。