Batch file 我的批处理代码有一些问题。Can';我不知道为什么';因为括号的缘故,它抛出了一个错误

Batch file 我的批处理代码有一些问题。Can';我不知道为什么';因为括号的缘故,它抛出了一个错误,batch-file,optimization,compiler-errors,parentheses,Batch File,Optimization,Compiler Errors,Parentheses,你自己抓取代码并查看它,每次它都可以问我开始时间,然后如果是上午或下午,但只要我点击进入上午/下午,它就会立即关闭,我在它关闭时截图,它说(这里出乎意料。如果有人能帮上忙,那就太好了。(另外,如果有人有修剪和优化技巧,那也太棒了。谢谢) 您的问题在于以下几行: set /p 1ampm=[am/pm:] 及 问题是变量名。批处理在调用批处理文件时可以获取参数,例如%1或%2。这会导致批处理将其视为%1 ampm%eq%am%,但它没有参数,因此%1为空。之后,它会看到第一个百分号,看到后面没有

你自己抓取代码并查看它,每次它都可以问我开始时间,然后如果是上午或下午,但只要我点击进入上午/下午,它就会立即关闭,我在它关闭时截图,它说
(这里出乎意料
。如果有人能帮上忙,那就太好了。(另外,如果有人有修剪和优化技巧,那也太棒了。谢谢)


您的问题在于以下几行:

set /p 1ampm=[am/pm:]

问题是变量名。批处理在调用批处理文件时可以获取参数,例如
%1
%2
。这会导致批处理将其视为
%1 ampm%eq%am%
,但它没有参数,因此%1为空。之后,它会看到第一个百分号,看到后面没有数字,并将其视为e名为
%eq%
的变量的开头,该变量也是空的。然后,它删除了最后一个百分号,只留下
ampmam(
作为行。这就是引发错误的原因


因此,要解决这个错误,只需用数字以外的东西开始变量。

您的问题在于以下几行:

set /p 1ampm=[am/pm:]

问题是变量名。批处理在调用批处理文件时可以获取参数,例如
%1
%2
。这会导致批处理将其视为
%1 ampm%eq%am%
,但它没有参数,因此%1为空。之后,它会看到第一个百分号,看到后面没有数字,并将其视为e名为
%eq%
的变量的开头,该变量也是空的。然后,它删除了最后一个百分号,只留下
ampmam(
作为行。这就是引发错误的原因


因此,要解决此错误,只需使用数字以外的内容启动变量。

我确信问题是由变量名
%1ampm%
引起的,因为
%1
被解释为传递到批处理文件的第一个参数(有关详细信息,请参阅
调用/?
);所以把名字改成一个不以数字开头的名字!@aschipfl在我提交之前52秒,我想伟大的头脑会认为alikeAh,该死,你打了我,我只是在准备相关的答案…;-)无论如何+1!我很确定问题是由变量名
%1ampm%
引起的,因为
%1
被解释为传递给批处理文件的第一个参数(有关详细信息,请参阅
调用/?
);所以把名字改成一个不以数字开头的名字!@aschipfl在我提交之前52秒,我想伟大的头脑会认为alikeAh,该死,你打了我,我只是在准备相关的答案…;-)无论如何+1!延迟扩展也有助于cases@npocmaka你是对的,但是最好不要用数字来开始变量。延迟扩展在这种情况下也有帮助cases@npocmaka你是对的,但是最好的做法还是不要以数字开始变量。
if %1ampm% EQU %am% (