标题: [文本处理] 批处理如何判断字符串中是否含有空格 [打印本页]
作者: lzcykevin 时间: 2016-7-22 23:27 标题: 批处理如何判断字符串中是否含有空格
本帖最后由 pcl_test 于 2016-7-22 23:39 编辑
例如
set a="aaaaabbbbbbb ccccccccc"
echo %a% | findstr /c:" " && echo ture || echo false
如果有空格输出ture,没有输出false
但是,使用findstr /c:" " 得不多正确的结果,到底该怎么写呢?
谢谢指导。
作者: pcl_test 时间: 2016-7-22 23:38
- @echo off
- set "a=aaaaabbbbbbb ccccccccc"
- if "%a%" neq "%a: =%" (echo;true) else echo;false
- pause
复制代码
作者: lzcykevin 时间: 2016-7-22 23:46
回复 2# pcl_test
谢谢
作者: pcl_test 时间: 2016-7-22 23:47
- @echo off
- set "a=aaaaabbbbbbbccccccccc"
- rem echo;%a%|findstr /c:" "&&echo;ture || echo;false
- echo;%a%|find " "&&echo;ture || echo;false
- pause
复制代码
作者: lzcykevin 时间: 2016-7-22 23:47
回复 2# pcl_test
非常感谢版主,我自己学习一下。
作者: lzcykevin 时间: 2016-7-22 23:50
回复 4# pcl_test
谢谢版主,原因我自己找的了
作者: WHY 时间: 2016-7-23 00:13
- echo a b c|findstr /r /c:" "
复制代码
作者: gawk 时间: 2016-7-23 08:41
- @echo off
- set "a=aaaaabbbbbbbccccccccc"
- set n=
- for /f "tokens=2" %%i in ("%a%") do (
- set "n=%%i"
- )
- if "%n%" neq "" (
- echo true
- ) else (
- echo false
- )
- pause
复制代码
作者: pcl_test 时间: 2016-7-23 15:25
回复 8# gawk
1%a%1这样好点吧
作者: pcl_test 时间: 2016-7-23 15:37
- @echo off
- set "str= ab"
- >nul 2>&1 set /a #%str%#=1&&echo;false||echo;true
- pause
复制代码
作者: dreamer 时间: 2016-7-29 13:13
本帖最后由 pcl_test 于 2016-7-29 13:54 编辑
回复 10# pcl_test
是否能幫忙說明一下
>nul 2 >&1 為何能這樣使用,他的意義又是什麼?
以及
#%str%# 的 #號用意是什麼,當使用在 Set #Var#=123456 時那個#號的意義是什麼?
謝謝。
作者: pcl_test 时间: 2016-7-29 14:01
本帖最后由 pcl_test 于 2016-7-29 14:11 编辑
回复 11# dreamer
此法是有局限性的
在cmd窗口分别执行以下命令,看到区别没
set /a a=1
set /a a b=1
set /a a=1 >nul
set /a a b=1 2>nul
原理就是利用set /a会判断算式的合法性
set "str= ab"
set /a #%str%#=1即为set /a # ab#=1
此处#的作用是为了可识别字符串前后的空格,而不是默认分隔符,如set /a a=1
Set #Var#=123456此处#的仅是变量名中的一个字符
echo,%#Var#%得123456
作者: dreamer 时间: 2016-7-29 23:19
本帖最后由 dreamer 于 2016-7-29 23:26 编辑
pcl_test: 后续有其他问题的在原帖追问PB -2
了解抱歉
set /a a=1 理解 A=1
set /a a b=1 理解 遺失運算子
set /a a=1 >nul 理解 重導向至NUL
set /a a b=1 2>nul 理解錯誤時重導向至NUL
#%Var%# 吸收了,感謝
不能理解是這段
>nul 2 >&1
若只執行這部份是出現錯誤的,這部份若用白話來說應該如何解釋?
>nul 重導向至NUL(>前並無任何值,回應是語法錯誤)
2 >也是語法錯誤
還有&1並不是指令卻放&之後
為何加上set /a #%str%#=1卻能無誤的執行?
作者: pcl_test 时间: 2016-7-29 23:30
回复 13# dreamer
set /a a=1 >nul 理解 重導向至NUL
set /a a b=1 2>nul 理解錯誤時重導向至NUL
那么>nul 2 >&1就是无论正确或错误,返回结果到导向nul,即屏蔽返回的信息
查看
http://www.bathome.net/viewthread.php?tid=2579
http://www.bathome.net/viewthread.php?tid=12553
作者: dreamer 时间: 2016-7-30 00:37
本帖最后由 pcl_test 于 2016-7-30 02:06 编辑
回复 14# pcl_test
了解,感謝您
作者: ai20110304 时间: 2016-7-30 15:22
回复 14# pcl_test
看了这篇文章,终于找到了我想彻底弄明白的“句柄复制”。。。。。感谢高手们。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |