批量比较数字



发布正在寻找变通的部分代码

if 09 LSS 9 (ECHO YES) ELSE (ECHO NO)

此命令总是回显"是",因为它认为09小于9。这个命令还有其他选择吗?

编辑:

谢谢,但Modulo部分在我试图插入的命令中不起作用。

有一个包含"123409"的文件test.txt,下面是我的命令

set actualdate=9
for /f "usebackq Tokens=1,2,3" %%d in (test.txt) do (SET /a x=1000%%e %% 1000 & if %x% LSS %ActualDate% ECHO %%d >> test2.txt)

代码片段的问题在于语法和扩展百分比
可以将&用于一行中的多个命令(而不是管道|),也可以将它们拆分为多行
您无法访问块内具有百分比扩展的变量x,但延迟扩展在中有效

setlocal EnableDelayedExpansion
set actualdate=9
for /f "usebackq Tokens=1,2,3" %%d in (test.txt) do (
   SET /a x=1000%%e %% 1000
   if !x! LSS %ActualDate% ECHO %%d >> test2.txt
)

如果可以将数字放入变量中,则可以使用模去掉前导零。

试试这个例子:

@ECHO OFF
SET a=09
SET b=9
SET /a x=1000%a% %% 1000
ECHO %x%
SET /a y=1000%b% %% 1000
ECHO %y%
if %x% LSS %y% (ECHO YES) ELSE (ECHO NO)
PAUSE

如果你尝试设置/a a=09,你会得到以下错误:

无效号码。数字常量可以是十进制(17)、十六进制(0x11)或八进制(021)。

相关内容

  • 没有找到相关文章

最新更新