2009-05-27 112 views
3

这里用户输入的代码给我找麻烦的部分:问题,在我的批处理文件

IF EXIST TH_BUILD_* (
ECHO A current build of Test Harness exists. 
set /p delBuild=Delete preexisting build [y/n]?: 
if "%delBuild%"=="y" (GOTO deleteandcontinue) else (EXIT) 
) 

出于某种原因,无论输入,该批处理文件退出。为什么会发生这种情况(deleteandcontinue从未达到)?

谢谢!

回答

3

测试delBuild当尝试使用延迟扩展:当读取命令

setlocal enableextensions enabledelayedexpansion 

IF EXIST TH_BUILD_* (
    ECHO A current build of Test Harness exists. 
    set /p delBuild=Delete preexisting build [y/n]?: 
    if "!delBuild!"=="y" (
     GOTO deleteandcontinue 
    ) else (
     exit 
    ) 
) 

:deleteandcontinue 
@echo At deleteandcontinue 

%var%变量被扩展。在parens之间的命令集被视为单个命令,因此delBuild在您测试时不存在。通过延时扩展,变量在命令执行时被扩展,所以在测试时,delBuild有一个值。

+0

太棒了,谢谢! – Monster 2009-05-27 16:59:11