Board logo

标题: 关于findstr 和 "|" 连接符的问题 [打印本页]

作者: ieutk     时间: 2007-6-19 23:27    标题: 关于findstr 和 "|" 连接符的问题
如题:

我在编写一个这样的批处理文件进碰到一个这样的问题!

@echo off
setlocal enabledelayedexpansion
title design by ieutk
mode con: cols=78 lines=15
color 1a
set num=0

:input
cls&echo\&echo/
set name=
set /p name= 请输入你的名字:
if not defined name goto input
echo %name%|findstr "^*$">nul && goto st||msg /v /w %username% " 你输入的名字暂时不符合要求! ">nul
goto input

:st
:: 计算输入的字符长度
set name=%name:~0,58%
set /a num+=1
for /f "delims=" %%a in ("%num%") do (
if not "!name:~%%a,1!"=="" goto st
set chi=%%a
)
set num=0


这样子可以正确执行代码,但是问题来啦
echo %name%|findstr "^*$">nul && goto st||msg /v /w %username% "  你输入的名字暂时不符合要求!   ">nul

看上面这句代码, "|" 连接符和它前后的代码之间没有空格,但是我如果改成
echo %name% |findstr "^*$">nul && goto st||msg /v /w %username% "  你输入的名字暂时不符合要求!   ">nul

这样的话就会执行后面的代码出现预置的提示!
就是在 %name% 和 | 之间加一个空格和不加空格结果不一样,想知道这是为什么呢?THS

作者: lxmxn     时间: 2007-6-19 23:40
echo %name% |findstr
这个是把%name%的值加上一个空格传递给findstr,因为你的匹配字符集[a-zA-Z0-9]里面没有空格,所以不成功。


echo %name%|findstr
仅仅是把%name%的值传递给findstr,所以可以成功。

作者: ieutk     时间: 2007-6-19 23:40
大家帮我试试看有没有有问题,在我这是有问题!

我的系统是:
Microsoft Windows XP [版本 5.1.2600]

作者: ieutk     时间: 2007-6-19 23:42
哦,谢谢版主,看来对 findstr 的正则表达式还欠提高!