Batch file 如果文件夹名称与正则表达式匹配,则Cmd findstr
我有一个非常简单的问题。在批处理文件中,我有以下内容:Batch file 如果文件夹名称与正则表达式匹配,则Cmd findstr,batch-file,command-line,cmd,command-prompt,Batch File,Command Line,Cmd,Command Prompt,我有一个非常简单的问题。在批处理文件中,我有以下内容: echo%Axx%|>numfindstr/r/c:“^A[0-9]{6}”(echo“true”) 暂停>nul %Axx%的格式为A123456。但这并不符合“真实”。 我是不是使用了正确的正则表达式,还是其他什么?非常感谢您的帮助。findstr的正则表达式功能非常有限 请尝试“^A[0-9][0-9][0-9][0-9][0-9][0-9]” 或者findstr/b/r/c:“A[0-9][0-9][0-9][0-9][0-9][0
echo%Axx%|>numfindstr/r/c:“^A[0-9]{6}”(echo“true”)
暂停>nul
%Axx%
的格式为A123456
。但这并不符合“真实”。
我是不是使用了正确的正则表达式,还是其他什么?非常感谢您的帮助。
findstr
的正则表达式功能非常有限
请尝试“^A[0-9][0-9][0-9][0-9][0-9][0-9]”
或者
findstr/b/r/c:“A[0-9][0-9][0-9][0-9][0-9][0-9][0-9]”
在findstr
表达式中没有计数{}
,在命令提示符窗口中键入findstr/?
,查看非常有限的可能性
要匹配一定数量的字符或表达式,需要重复相应的搜索表达式,如下所示:
echo(%Axx%| > nul findstr /R /C:"^A[0123456789][0123456789][0123456789][0123456789][0123456789][0123456789]$" && echo true
> nul pause
如果要精确匹配整个字符串,则需要追加$
。此外,还必须删除管道符号前面的空格|
,因为它在其他情况下也会回显
我在搜索表达式中使用的是[0123456789]
而不是[0-9]
,因为前者只匹配数字,但后者也可能匹配一些特殊字符,如²
或³
,具体取决于当前代码页
请注意,/B
与搜索字符串中的第一个字符相同,因此不要同时声明这两个字符
最后,如果
%Axx%
与搜索字符串匹配,我相信您实际上希望回显true
。这就是为什么我将|
替换为&&
。如果我错了,而你想要相反的行为,只需保持|
谢谢,你的第一个解决方案非常有效:)