括号错误

时间:2012-04-13 00:56:34

标签: file batch-file

这是批量制作

@echo off  
title TXTanimation  
set dir101=C:\USers\Jake\Desktop\file.bat  
goto menu  
echo Lets make a text animation  
pause  
set /p dir101=where will the .bat be saved:  
echo @ECHO OFF > %dir101%  
:menu  
echo 0=Edit important information  
echo 1=Display .txt  
echo 2=Play sound  
echo 3=Close sound player  
echo 4=Add nessicary wait between .txt  
echo 5=Label point  
echo 6=Edit variable  
echo 7=Goto point  
echo 8=Create IF sentence  
echo 9=End it  
Set /p choose=which one:  

If '%choose%'=='0' (  
SEt /p title=What is the title  
:LOL101  
set /p color=what color do you want (type test to experiment with the colors)  
If '%color%'=='test' goto tester  
goto model  
:tester  
SEt /p test=Please give hexadecimal number type exit to leave:  
if '%test%'=='exit' goto LOL101  
color %test%  
goto tester  
:model 
echo title %title% >> %dir101%  
echo color %color% >> %dir101%  
)  

If '%choose%'=='1' (  
set /p dir=what is the dir of your .txt:  
)  
If '%choose%'=='1' (  
echo cls >> %dir101%  
echo type %dir% >> %dir101%  
)  
If '%choose%'=='4' (  
SEt /p thyme=How much milliseconds 250 is usual:  
echo ping 192.168.1.1 -n 1 -w %thyme% >> %dir101%  
)  
goto menu  
If '%choose%'=='9' (  
echo Thanks for making  
pause  
)

它将用于在.bat文件中创建.txt动画。我可以完成它,但我首先需要解决问题。

问题在于它确实如此 echo title %title% >> %dir101% echo color %color% >> %dir101% 即使有括号

1 个答案:

答案 0 :(得分:1)

您不清楚自己遇到了什么问题。但是,我发现您的代码存在常见问题。

您正在设置环境变量,然后尝试使用立即扩展来访问该值,所有这些都在括号内的相同代码块中。这不起作用,因为在解析块时会发生扩展,并且在执行任何操作之前一次性解析整个块。因此,您最终会获得在块中设置值之前存在的值。

解决方案是使用脚本顶部的SETLOCAL EnableDelayedExpansion启用延迟扩展。然后使用延迟扩展(!var!)而不是正常扩展(%var%)来在执行时而不是在解析时获取变量的值。

有关更多信息,请在命令提示符下键入HELP SET并开始阅读以开头的段落“最后,添加了对延迟环境变量扩展的支持...”