2

发布正在寻找解决方法的部分代码

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

该命令始终回显“是”,因为它认为 09 小于 9。此命令的任何替代方案?

编辑:

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

有一个包含“1234 09”的文件 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)
4

2 回答 2

3

您的代码片段的问题在于语法和百分比扩展。
您可以&在一行中使用多个命令(而不是 pipe |)或将它们拆分为多行。
您无法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
)
于 2012-07-10T20:24:21.003 回答
2

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

试试这个示例:

@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

如果您尝试执行 SET /aa=09,您将收到以下错误:

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

于 2012-07-10T19:34:47.910 回答