Board logo

标题: [文本处理] [已解决]批处理命令findstr匹配不到特殊字符的问题 [打印本页]

作者: waitfortea    时间: 2022-9-26 11:03     标题: [已解决]批处理命令findstr匹配不到特殊字符的问题

本帖最后由 waitfortea 于 2022-9-28 15:17 编辑

━/
┣━我的资源
┃  ┣━慕课破解
┃  ┃  ┣━SoutiPro浏览器.zip
┃  ┣━【1】Python初级(必学)
┃  ┃  ┣━【01】和【02】课程(配套课件和源码).zip
┃  ┃  ┣━【01】Python基础语法(必学)
┃  ┃  ┃  ┣━第8节 列表和元组
┃  ┃  ┃  ┃  ┣━27-列表复制数据.mp4
┃  ┃  ┃  ┃  ┣━18-下标.mp4
┃  ┃  ┃  ┃  ┣━28-列表的遍历之while.mp4
┃  ┃  ┃  ┃  ┣━26-列表修改数据.mp4
┃  ┃  ┃  ┃  ┣━31-随机分配办公室的步骤分析.mp4
┃  ┃  ┃  ┃  ┣━22-列表增加数据之append.mp4
┃  ┃  ┃  ┃  ┣━25-列表删除数据.mp4
┃  ┃  ┃  ┃  ┣━35-定义元组.mp4
┃  ┃  ┃  ┃  ┣━32-随机分配办公室的实现代码.mp4
┃  ┃  ┃  ┃  ┣━33-列表总结.mp4
┃  ┃  ┃  ┃  ┣━20-判断是否存在.mp4
┃  ┃  ┃  ┃  ┣━36-元组常见操作之查找.mp4
┃  ┃  ┃  ┃  ┣━37-元组数据的修改操作.mp4
┃  ┃  ┃  ┃  ┣━24-列表增加数据之insert.mp4
┃  ┃  ┃  ┃  ┣━17-列表简介.mp4
┃  ┃  ┃  ┃  ┣━38-元组的总结.mp4
┃  ┃  ┃  ┃  ┣━23-列表增加数据之extend.mp4
┃  ┃  ┃  ┃  ┣━21-体验案例-判断是否存在.mp4
┃  ┃  ┃  ┃  ┣━19-查找函数.mp4
┃  ┃  ┃  ┃  ┣━34-体验元组.mp4
┃  ┃  ┃  ┃  ┣━30-列表嵌套.mp4
┃  ┃  ┃  ┃  ┣━29-列表的遍历之for.mp4
┃  ┃  ┃  ┣━第9节 字典和集合
┃  ┃  ┃  ┃  ┣━04-字典常用操作之删除.mp4
┃  ┃  ┃  ┃  ┣━05-字典常用操作之修改.mp4
┃  ┃  ┃  ┃  ┣━16-集合总结.mp4
┃  ┃  ┃  ┃  ┣━10-字典的循环遍历之键值对(拆包).mp4
┃  ┃  ┃  ┃  ┣━03-字典常用操作之新增.mp4
┃  ┃  ┃  ┃  ┣━09-字典的循环遍历之键值对.mp4
┃  ┃  ┃  ┃  ┣━11-字典的总结.mp4
┃  ┃  ┃  ┃  ┣━07-字典的循环遍历之key.mp4
┃  ┃  ┃  ┃  ┣━08-字典的循环遍历之value.mp4
┃  ┃  ┃  ┃  ┣━15-集合常见操作之查找数据.mp4
┃  ┃  ┃  ┃  ┣━13-集合常见操作之增加数据.mp4
┃  ┃  ┃  ┃  ┣━06-字典常用操作之查找.mp4
┃  ┃  ┃  ┃  ┣━12-创建集合.mp4
┃  ┃  ┃  ┃  ┣━14-集合常见操作之删除数据.mp4
对如上的文本sss.txt,findstr "┃  ┃  ┃  ┃  ┣━" sss.txt没有输出
作者: qixiaobin0715    时间: 2022-9-26 11:14

  1. findstr /C:"┃  ┃  ┃  ┃  ┣━" sss.txt
复制代码

作者: Batcher    时间: 2022-9-26 11:17

回复 1# waitfortea


搜索的字符串包含空格的时候,需要使用 /c:
参考:http://bbs.bathome.net/thread-14682-1-1.html
作者: waitfortea    时间: 2022-9-26 11:44

回复 3# Batcher


    同样的文本 为什么for /f "delims=" %%a in (sss.txt) do (echo %%a)正常输出
但是 for /f "delims=,skip=1" %%a in (sss.txt) do (echo %%a) 非但没有跳过第一行,反而有的行输出都不完整了
作者: Batcher    时间: 2022-9-26 12:00

回复 4# waitfortea


    for /f "skip=1 delims="
作者: waitfortea    时间: 2022-9-26 12:17

回复 5# Batcher


    感谢大佬 明白了 但是我发现这些开关的组合在您的教程里好像都没有提到,是因为教程是基础篇的关系吗
作者: waitfortea    时间: 2022-9-26 14:10

回复 5# Batcher
  1. @echo off
  2. chcp 65001
  3. setlocal enabledelayedexpansion
  4. cd /d "%~dp0"
  5. cd. >"%~dp0a.txt"
  6. for /f "skip=1 delims=" %%a in (sss.txt ) do (
  7. set dir=%%a
  8. echo !dir!1
  9. set dir=!dir:┃  ┃  ┃  ┃  ┣━=5\!
  10. set dir=!dir:┃  ┃  ┃  ┣━=4\!
  11. set dir=!dir:┃  ┃  ┣━=3\!
  12. set dir=!dir:┃  ┣━=2\!
  13. set dir=!dir:┣━=1\!
  14. echo !dir!1
  15. >>"%~dp0a.txt" echo !dir!
  16. )
复制代码
命令如上,同样的文本,想问下为什么输出的dir后面多了很多空格,明明替换之前都没有,而为什么替换之后有
作者: Batcher    时间: 2022-9-26 14:14

回复 6# waitfortea


for命令教程第22页提到:
tokens 和 delims 同时出现时,建议把 delims 放在 tokens 后面。

没有提到skip、delims、tokens同时出现的情况。把 delims 放在最后。
作者: Batcher    时间: 2022-9-26 14:16

回复 7# waitfortea


    请检查你的代码第10行结尾是否有多余的空格
作者: waitfortea    时间: 2022-9-26 14:23

回复 9# Batcher


    还真有,我去,连set也要计算空格的,没有想到,可这样的话应该理论是只有有这个字符的行才会有空格,那我怎么所有行都有空格呢,不知道我理解的对不对,还有感谢大佬解答
作者: waitfortea    时间: 2022-9-26 14:25

回复 8# Batcher


    这个说法好像不太对,因为出现”tokens=1-2, delims=\“或者”tokens=1-2, delims=\ “的时候都无法识别分隔符,不知道我理解得对不对
作者: Batcher    时间: 2022-9-26 14:27

回复 10# waitfortea


给set命令加上双引号是个好习惯,例如:
set "dir=!dir:┃  ┃  ┃  ┣━=4\!"
作者: Batcher    时间: 2022-9-26 14:28

回复 11# waitfortea


    没啥特殊情况的话,都把 delims 放在最后
作者: waitfortea    时间: 2022-9-26 14:29

回复 12# Batcher
确实,因为我之前一致认为!!或者%%是确认边界的,这个其实是错误的
作者: waitfortea    时间: 2022-9-26 14:30

回复 13# Batcher


    ”tokens=1-2, delims=\ “ 这个不是把delims放到最后了吗
作者: Batcher    时间: 2022-9-26 14:37

回复 15# waitfortea
  1. for /f "tokens=1-3 delims=\" %%i in ("C:\Test\From") do (
  2.     echo %%i
  3.     echo %%j
  4.     echo %%k
  5. )
复制代码

作者: waitfortea    时间: 2022-9-27 20:44

回复 3# Batcher
    findstr /c "┃  ┣━" sss.txt 失败
显示FINDSTR: /c ignored
作者: waitfortea    时间: 2022-9-27 20:47

回复 2# qixiaobin0715


    也没有输出
作者: qixiaobin0715    时间: 2022-9-28 08:59

你可以把测试失败的文件发到网盘上,让大家帮你测试,看看是哪里出了问题。
作者: qixiaobin0715    时间: 2022-9-28 12:09

本帖最后由 qixiaobin0715 于 2022-9-28 12:14 编辑

回复 18# waitfortea
你没有用对,/C后面接冒号+引号,并且/C+冒号+引号之间不能有空格。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2