【问题标题】:Batch variables dont give promt to set批处理变量不提示设置
【发布时间】:2021-04-17 19:16:48
【问题描述】:

我是批处理文件脚本的新手,所以这会让我显得很愚蠢,但我在测试中的变量不起作用。

这里是 cmd 脚本:

@echo off
cls
: bruh
echo welcome to the shop, what would you like?
pause
set p/ grapes=
cls
echo oh so you want %grapes%?
pause
echo you have bought %grapes%
pause
cls 
goto bruh

每当我到达变量时,它只会说按任意键继续。

有谁知道如何解决这个问题?

【问题讨论】:

  • 以命令选项开头的是/P 而不是p/。请打开命令提示符窗口,键入set /?,按[ENTER] 键,然后阅读其使用信息。我还建议,在您使用该选项陷入困境之前,您使用库存/物品清单,以确保也只能选择该库存中的物品。允许最终用户在set /p 提示符处输入任何内容(或什么都不输入),需要适当的验证代码来防止意外或故意输入。
  • it just says press any key to continue.:是的。这就是pause 应该做的。顺便说一句:set /p 可以显示提示:set /p "grapes=What would you like? "

标签: loops batch-file variables


【解决方案1】:

您的 set 命令不正确。它的set /p 不是 set p/.这是一个工作代码

@echo off
cls
: bruh
set input=
set /p input=echo welcome to the shop, what would you like?
cls
echo oh so you want %input%?
pause
echo you have bought %input%
pause
cls 
goto bruh

感谢@Compo,他提醒我清除 %input% 的内容

【讨论】:

  • Justaus3r,您应该清除%input% 的内容,最好在您的set /p 命令上方的行上,因为它正在循环,并且在下一个propting_ 时仍然会有最后循环的内容,(I'在过去半小时左右的时间里,已经根据您的其他答案之一向您解释了这一点)_。 BlazedRasta,请注意我在主要问题下的评论,您和此代码不会阻止我输入任何内容、恶意代码或故意输入错误。
  • @Compo 我不知道,也许他只是故意将变量命名为葡萄。他没有提到他在脚本中需要条件来比较他的输入。顺便说一句,BlazedRasta Compo 是对的,这段代码赢了如果您只想输入葡萄,则不要阻止您输入错误的输入............
  • 我要向您说明的一点是,如果最终用户第一次输入grapes 作为他们的项目,而下一次不小心按回车键,在输入milk 之前,代码将使用@ 运行987654328@ 再次,我敢肯定不会需要它,或者根据其余代码可能会导致其他地方出现问题。
  • @Compo 哦,是的,这就是为什么当你指出这一点时我清除了输入。代码现在更新
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-11
  • 2016-04-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多