Batch file 批处理程序中未知的“缺少操作数”注释

Batch file 批处理程序中未知的“缺少操作数”注释,batch-file,operands,Batch File,Operands,我正在为Windows 10制作一个小的lazy sleep.bat文件,它运行良好。除了启动程序时在cmd窗口顶部缺少一个操作数: 我是批处理的新手,所以不要太苛刻。我已经上网了,但没有任何东西能解决我的问题,而且我尝试过的东西似乎都不能解决它 这是我的法语代码,对不起: @回音 Unicode的Rem 65001、850或863似乎不适用于法语口音 chcp 65001 :环空器 设置/a txt1= 设置/a tmp=0 set/p txt1=Veuillez précer unieé单位

我正在为Windows 10制作一个小的lazy sleep.bat文件,它运行良好。除了启动程序时在cmd窗口顶部缺少一个操作数: 我是批处理的新手,所以不要太苛刻。我已经上网了,但没有任何东西能解决我的问题,而且我尝试过的东西似乎都不能解决它

这是我的法语代码,对不起:

@回音 Unicode的Rem 65001、850或863似乎不适用于法语口音 chcp 65001 :环空器 设置/a txt1= 设置/a tmp=0 set/p txt1=Veuillez précer unieé单位:heures,minutes ou secondes。环空浇注程序。 如果/i%txt1%==一次转到出击 如果/i%txt1%==h goto heures 如果/i%txt1%==m转到分钟 如果/i%txt1%==s转到秒 :heures set/p tmp=Dans combien d'heures SOUHAITEX您是否愿意继续?0注入环空器: 如果/i%tmp%==0转到环空器 set/a dur=tmp*3600 超时/t%dur%&&rundll32.exe powrpof.dll,设置uspendstate Sleep :分钟 set/p tmp=Dans combien de minutes souhaitez您是否愿意延长会议时间?0注入环空器: 如果/i%tmp%==0转到环空器 set/a dur=tmp*60 超时/t%dur%&&rundll32.exe powrpof.dll,设置uspendstate Sleep :秒 set/p tmp=Dans combien de secondes souhaitez你有没有时间延长?0注入环空器: 如果/i%tmp%==0转到环空器 set/a dur=tmp 超时/t%dur%&&rundll32.exe powrpof.dll,设置uspendstate Sleep :出动 暂停 问题是输入单位小时、分钟、秒,然后输入计时器进入睡眠模式的值

取消意味着取消 出动意味着退出

谢谢你能带来的任何帮助

我明白了

问题是/a开关用于设置数值。我从txt1变量的第5行删除了它,因为它应该是文本

在上找到答案。

批处理文件的第一个Set/p命令会更好,因为它只需要特定的条目,而使用choice.exe。对于第二个Set/P命令,您需要了解,与choice命令不同,最终用户完全不能输入任何内容或绝对不能输入任何内容。这意味着,除非验证输入,否则后续命令可能无法工作。另外,您的代码非常重复,因此我为您重新构建了它,并在这样做的过程中删除了您的问题集/a:

@回音 ChCp 65001>NUL choice/C hmsa/N/M威利兹练习者单位:每分钟你秒。环空浇注程序。 如果错误级别4转到:EOF 如果错误级别3设置str=e秒,设置mult=1 如果错误级别2设置str=e分钟,设置mult=60 如果错误级别1 Set str='heures&Set mult=3600 :康宾 设置dur= 设置/P dur=Dans combien d%str%souhaitez您是否需要延长期限? 回音%dur%| findstr/R^\[0-9]*\$>NUL|GoTo Combien 集合/A dur*=多个 超时/T%dur%/NoBreak rundll32 powrpof.dll,设置uspendstate Sleep
顶部缺少的操作数是模糊的。顶部的具体含义是什么?顶部表示它在@echo离线上,这显然不会产生丢失操作数错误。以Rem开头的下一行也没有,因此问题不在顶部。这意味着,当我启动程序时,我会得到以下几行:Page de codes active:65001 Il manque un opérande缺少一个操作数,然后删除@echo off并找出比顶部更具体的位置。它究竟是在哪里产生这种错误的?我们很乐意提供帮助,但您需要做的基本工作是告诉我们问题所在,而在顶部则不这样做。批处理文件不会运行到最后,然后随机地说在此之前的某个地方有错误。他们在错误发生的那一行输出错误。如果需要,每隔几行插入几个pause语句以帮助隔离问题。好的,您的意思是@echo off是一个防止控制台显示问题所在的命令,您最好现在删除这一行。问题出现在第5行>set/a txt1=如果您努力清楚地说明问题并提供详细信息,该站点将提供大量帮助。如前所述,我已经解释了您问题中不清楚的地方,并提供了一些建议,帮助您缩小问题范围,以便尽力提供帮助。不幸的是,你觉得要求你合作解决问题很不方便。我现在确实明白了,在我写最后一篇评论时,你偷偷地编辑了你的评论。很抱歉,当我回应时,我看不到没有什么。我还看到您对注释进行了其他编辑。在执行算术函数时使用/A选项。由于set/a命令(第6行和第7行)都没有执行算术运算,因此它们在技术上都不正确,因为它们应该只是set命令,set txt1=和set tmp=0。当根据该算术结果创建变量时,该值(虽然明显是整数)仍然是字符串值
e、 不用了,谢谢。我还不能推广你的答案,没有足够的声誉。它实际上不能正常工作。@Kl3mMichard,你能解释一下你的意思吗?我的回答完全可以消除有问题的Set/A命令“缺少操作数”错误。与上述内容完全相同的脚本工作正常。可能的问题是,在运行之前,您需要确保默认的cmd.exe字体不是光栅字体,如果使用Windows 10,则不应该是光栅字体。接下来我建议您不要使用代码页65001,而是选择1252。最后,只有在没有启用hibernate的情况下,suspend命令才会休眠,如果启用了,那么应该首先发出PowerCfg-H Off。当我开始这个项目时,它给了我第一个问题。无论我选择了m、h、s还是a,h都是他得到的答案,所以只选择了几个小时。然后我输入任何数字,如果里面有一个0,它会重新启动程序到第一个问题,比如10或350。最后,当我按enter键运行计时器时,程序停止,邀请关闭。@Kl3mMichard,除非您更改了某些内容,否则您告诉我发生了什么是绝对不可能的。当您测试我的脚本时,您必须只测试发布的脚本,我的答案在验证为解决方案之前不得以任何方式修改。代码在我可用的系统上进行了测试,Windows Vista和Windows 7,字体都改为Lucida Console,Windows 10。在所有情况下,代码页都按照之前的建议更改为1252,默认值为850。代码完全按照任务的设计和说明工作。