[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理如何判断字符串中是否含有空格

本帖最后由 pcl_test 于 2016-7-22 23:39 编辑

例如

set a="aaaaabbbbbbb ccccccccc"
echo %a% | findstr  /c:" " && echo ture || echo false

如果有空格输出ture,没有输出false


但是,使用findstr  /c:" " 得不多正确的结果,到底该怎么写呢?
谢谢指导。

  1. @echo off
  2. set "a=aaaaabbbbbbb ccccccccc"
  3. if "%a%" neq "%a: =%" (echo;true) else echo;false
  4. pause
复制代码

TOP

回复 2# pcl_test


    谢谢

TOP

  1. @echo off
  2. set "a=aaaaabbbbbbbccccccccc"
  3. rem echo;%a%|findstr /c:" "&&echo;ture || echo;false
  4. echo;%a%|find " "&&echo;ture || echo;false
  5. pause
复制代码

TOP

回复 2# pcl_test


    非常感谢版主,我自己学习一下。

TOP

回复 4# pcl_test


    谢谢版主,原因我自己找的了

TOP

  1. echo a b c|findstr /r /c:" "
复制代码

TOP

  1. @echo off
  2. set "a=aaaaabbbbbbbccccccccc"
  3. set n=
  4. for /f "tokens=2" %%i in ("%a%") do (
  5.     set "n=%%i"
  6. )
  7. if "%n%" neq "" (
  8.     echo true
  9. ) else (
  10.     echo false
  11. )
  12. pause
复制代码
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

回复 8# gawk

1%a%1这样好点吧

TOP

  1. @echo off
  2. set "str= ab"
  3. >nul 2>&1 set /a #%str%#=1&&echo;false||echo;true
  4. pause
复制代码

TOP

本帖最后由 pcl_test 于 2016-7-29 13:54 编辑

回复 10# pcl_test

是否能幫忙說明一下
>nul 2 >&1 為何能這樣使用,他的意義又是什麼?
以及
#%str%# 的 #號用意是什麼,當使用在 Set #Var#=123456 時那個#號的意義是什麼?
謝謝。
1

评分人数

    • pcl_test: 后续有其他问题的在原帖追问PB -2

TOP

本帖最后由 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

TOP

本帖最后由 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卻能無誤的執行?

TOP

回复 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

TOP

本帖最后由 pcl_test 于 2016-7-30 02:06 编辑

回复 14# pcl_test


    了解,感謝您

TOP

返回列表