批量清除变量值

时间:2016-01-25 07:43:19

标签: batch-file

我正在读取两个文本文件来设置两个变量(u,l)的值。现在我想写脚本来运行多个文件。当它读取第一个文件时,它将从相应的文件中设置变量,但是当它读取第二个文件时,它将设置这些变量的相同值。

@echo on
set /p u=< ul.txt
set /p l=< ll.txt
echo %u%-%l%

我尝试了SETLOCAL / ENDLOCAL选项,但在这种情况下,它不会读取变量值并获得ECHO关闭的错误。甚至我在脚本的最初编写了set u=set l=但在我的情况下没有工作。

1 个答案:

答案 0 :(得分:1)

您提供的代码可以正常使用。但是,我猜它是来自if语句或for循环的代码。如果是这种情况,您应该使用delayed expansion。你可以像这样使用延迟扩展:

  

这是一个示例,而不是您需要的确切代码:

@echo on
setlocal EnableDelayedExpansion

if 1 equ 1 (
set /p "u=< ul.txt"
set /p "l=< ll.txt"
echo !u!-!l!
)
pause

FOR /L %%G IN (1,1,1) DO (
set /p "u=< ul.txt"
set /p "l=< ll.txt"
echo !u!-!l!
)
pause

set /p u=< ul.txt
set /p l=< ll.txt
echo %u%-%l%
pause

请注意,在if语句和for循环中,当%符号围绕变量名称时,用!替换它们。因此%someVar%变为!someVar!,但%%F保持%%F

在if语句和for循环之外,所以在()之外,你使用普通%someVar%