Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 批量比较int';不是弦而是弦_Windows_Batch File - Fatal编程技术网

Windows 批量比较int';不是弦而是弦

Windows 批量比较int';不是弦而是弦,windows,batch-file,Windows,Batch File,我有一个从字符串中解析整数的脚本,对于小于10的值,解析的整数是01、02、03。。。因此,当我尝试将其与小于10的整数值进行比较时,它会进行比较,例如09和9。如果将它们作为整数进行比较,则值相同,但将它们作为字符串进行比较,因此它们不相同。那么如何强制批处理比较整数值呢 以下是一些示例代码: @echo off setlocal EnableDelayedExpansion set str=10:04:01 set str=!str:~3,2! set num=4 echo str: !

我有一个从字符串中解析整数的脚本,对于小于10的值,解析的整数是01、02、03。。。因此,当我尝试将其与小于10的整数值进行比较时,它会进行比较,例如09和9。如果将它们作为整数进行比较,则值相同,但将它们作为字符串进行比较,因此它们不相同。那么如何强制批处理比较整数值呢

以下是一些示例代码:

@echo off 
setlocal EnableDelayedExpansion

set str=10:04:01
set str=!str:~3,2!
set num=4
echo str: !str!
echo num: !num!
if !num! geq !str! (
    if !num leq !str! (
        echo they are equal
    )
)
输出为:

str: 04
num: 4
我希望输出为:

str: 04
num: 4
they are equal

使用
set/a str=1%str:~3,2%-100
。感谢的可能重复,这是可行的,但是有可能强制比较为整数值吗?因此不需要删除前导零?稍后我可能需要进行文本比较,因此仍然需要前导零。我知道我可以在删除零之前创建一个重复的值,但这会变得很麻烦。如果是一个数字,你可以用
0
作为前缀,但是如果有两个,那么比较就会混乱,所以不,只有一个重复的变量才是解决方案。你说“如果09和9作为整数进行比较,那么值是相同的”。事实并非如此。以0开头的整数值被视为八进制数,因此09是无效的八进制整数。这意味着如果使用“强制比较为整数值”的方法,您只会收到一条错误消息。试试这个:
set/A nine=09
和这个:
if 7 eq 07 echo True
另一个例子:
if 011 eq 9 echo True
来说明有用的@Aacini的评论。使用
set/A str=1%str:~3,2%-100
。感谢的可能重复,这是可行的,但是有可能强制比较为整数值吗?因此不需要删除前导零?稍后我可能需要进行文本比较,因此仍然需要前导零。我知道我可以在删除零之前创建一个重复的值,但这会变得很麻烦。如果是一个数字,你可以用
0
作为前缀,但是如果有两个,那么比较就会混乱,所以不,只有一个重复的变量才是解决方案。你说“如果09和9作为整数进行比较,那么值是相同的”。事实并非如此。以0开头的整数值被视为八进制数,因此09是无效的八进制整数。这意味着如果使用“强制比较为整数值”的方法,您只会收到一条错误消息。试试这个:
set/A nine=09
和这个:
if 7 eq 07 echo True
另一个例子:
if 011 eq 9 echo True
来说明有用的@Aacini的评论。