在Windows cmd中,temp dir设置为
C:\spec>echo %temp%
C:\Users\mahmood\AppData\Local\Temp
还有一个包含
的文件%temp%\ specdev.txt C:\spec>type %temp%\specdev.txt
c:\cpu
现在我执行此命令
findstr -r "^[a-zA-Z]:$" %temp%\specdev.txt >nul 2>&1
它不会返回任何东西!!
C:\spec>findstr -r "^[a-zA-Z]:$" %temp%\specdev.txt >nul 2>&1
C:\spec>
问题是什么?你能解释一下这个命令是做什么的吗?它是批处理脚本的一部分。
答案 0 :(得分:3)
您无法看到任何结果,因为所有控制台输出都被重定向到NUL:命令的最后一部分>nul
将标准输出重定向到NUL,2>&1
将错误输出重定向到标准输出(因此,NUL)
因为此命令是脚本的一部分,所以它并不意味着它无用:FINDSTR在找到匹配时将全局环境变量%ERRORLEVEL%
设置为0,并在找不到时将其设置为1。因此,脚本可以将所有输出发送到NUL(而不是阻塞用户屏幕)并检查%ERRORLEVEL%
以验证结果。
关于此命令正在搜索的模式,"^[a-zA-Z]:$"
表示它搜索的行只包含从“a”到“z”(大写和小写)的单个字母,并以冒号结尾“: ”。因此,您描述的文件%temp%\specdev.txt
与表达式不匹配。
答案 1 :(得分:0)
试试这个而不是findstr -r“^ [a-zA-Z] * $”%temp%\ specdev.txt> nul 2>& 1
答案 2 :(得分:0)
问题是字符串与正则表达式不匹配,正则表达式匹配的行除了单个字母后跟':'
个字符外。
所以现在问题是,你真正想要匹配的模式是什么?也许你想要:
"^[a-zA-Z]:"
将匹配以字母后跟':'
开头的行(但可以在该行后面跟随其他字符)。但我怀疑你想要更复杂的东西。