我有一个批处理文件的问题,如下所示。我已经搜索了几个小时,但是没有找到与我的问题相关的内容。因此,这是我的代码(英语不是我的母语,请谅解):
:fileexist
For %%f in ("bin/*.exe") do (
set /A count+=1
set c!count!=%%f
)
Set "input="
Set /P input= Select
If "!input!" GTR "!count!" (Goto :fileexist)
If "!input!" EQU "0" (Set Exe=No executable file) & (Goto :nofileexist)
If "!input!" LSS "1" (Goto :fileexist)
If "!input!" LEQ "!count!" (Set Exe=!c%input%!) & (Goto :gotfile)
Goto :fileexist
现在,在该文件夹(bin)中默认有三个可执行文件(示例),但实际客户端可能少于3个或多于3个。 让我们以示例为例,如果我正确输入(1、2或3)并选择文件,则代码可以正常工作。 但是,如果我输入(12、13、14等),它仍然会选择第一个文件,请注意,只要第一个数字是“1”,则任意数字都可以正常工作。
同样,如果我输入(21、22、23等),它将选择第二个文件,并且任何以“2”开头的数字都可以正常工作,但是现在出现了“3”,你猜怎么着? 它将不接受任何比“3”更高的数字,无论是(31、32、4000左右),任何大于“3”的数字都不被接受,我也希望它不接受其他数字,例如(12、1400、23、27553等)。
我花了几个小时试图解决它,但没有任何运气,这就是为什么这是我的最后一次尝试,其中涉及以下内容:
- 将延迟扩展从“!input!”替换为“%input%”。 - 替换大于/小于/等于符号。 - 在循环内设置set命令周围的引号。 - 尝试使用类似于此%count:-%的方法删除set命令创建的隐藏空格(即使在引号周围),还尝试了更多方法,但没有可能运气好。
对于我的英语和这堵文字墙,我很抱歉。 如果有什么不清楚的地方,请告诉我,非常感谢您花时间研究此事。 如果我们都能找出问题根源并想出解决方案,那就太好了。 谢谢。